自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 资源 (2)
  • 收藏
  • 关注

原创 flink scala版本报错JavaConversions$.deprecated$u0020propertiesAsScalaMap

排查发现 从scala 2.12版本开始,Scala官方废除了“scala.collection.JavaConversions”,改用“scala.collection.JavaConverters”。排查了flink lib目录的jar包,flink本身是2.11的Scala版本.依赖的doris connector 的Scala版本是2.12,产生了冲突,将flink doris connector改为Scala 版本,成功解决这个问题.测试启动flink任务的时候,报了如下错误....

2022-08-31 11:52:31 1063 1

原创 Flume采集rsync同步文件,有重复数据,解决方案

最近线上做测试,因为有服务布在公网云,kafka和hadoop集群布在私有云.所以想采用flume->kafka->flume->hadoop方案,将公有云的服务日志收集到hadoop集群.因为公有云上服务布的节点节点比较多,所以采用rsync方式,将所有应用日志采集到一台服务器上.再用flume做采集.开始flume使用agent.sources.s1.type = TAILDIR的方式,将日志发送过去以后,发现日志有重复数据.排查以后发现,rsync用了 -avz 参数, 网上查

2021-01-21 12:35:55 920

原创 关于String的intern()方法的一个面试题

先说intern方法的作用.jdk7及以后,如果串池有,不会放入,返回已有的串池中的对象地址,如果没有,会把对象的引用地址复制一份,放入串池,并把串池中的引用地址返回看demo. String s = new String("1"); s.intern(); String s2 = "1"; System.out.println(s == s2);//false String s3 = new String("a") + new String("a"); s3.i

2021-01-09 10:57:13 409 2

原创 Java锁介绍,什么是自旋锁?自旋的好处和后果是什么呢?

什么是自旋我们了解什么叫自旋?“自旋”可以理解为“自我旋转”,这里的“旋转”指“循环”,比如 while 循环或者 for 循环。“自旋”就是自己在这里不停地循环,直到目标达成。而不像普通的锁那样,如果获取不到锁就进入阻塞。对比自旋和非自旋的获取锁的流程我们用这样一张流程图来对比一下自旋锁和非自旋锁的获取锁的过程。我们来看自旋锁,它并不会放弃 CPU 时间片,而是通过自旋等待锁的释放,也就是说,它会不停地再次地尝试获取锁,如果失败就再次尝试,直到成功为止。我们再来看下非自旋锁,非自旋锁和自旋

2020-10-24 15:08:30 2376

原创 clickhouse系列之四:clickhouse的表引擎

前言表引擎(即表的类型)决定了:1)数据的存储方式和位置,写到哪里以及从哪里读取数据2)支持哪些查询以及如何支持。3)并发数据访问。4)索引的使用(如果存在)。5)是否可以执行多线程请求。6)数据复制参数。ClickHouse的表引擎有很多,下面介绍其中几种,对其他引擎有兴趣的可以去查阅官方文档:https://clickhouse.yandex/docs/zh/operations/table_engines/1. TinyLog最简单的表引擎,用于将数据存储在磁盘上。每列都存储在单独

2020-10-16 17:11:08 837 1

原创 clickhouse系列之三: clickhouse常用的数据类型

整形固定长度的整型,包括有符号整型或无符号整型。整型范围(-2n-1~2n-1-1):Int8 - [-128 : 127]Int16 - [-32768 : 32767]Int32 - [-2147483648 : 2147483647]Int64 - [-9223372036854775808 : 9223372036854775807]无符号整型范围(0~2n-1):UInt8 - [0 : 255]UInt16 - [0 : 65535]UInt32 - [0 : 42949..

2020-09-15 14:57:03 598

原创 Apache Hive 集成Tez引擎

Tez 简介Tez 是一个 Hive 的运行引擎,性能优于 MR。为什么优于 MR 呢?看下图。用 Hive 直接编写 MR 程序,假设有四个有依赖关系的 MR 作业,上图中,绿色是 Reduce Task,云状表示写屏蔽,需要将中间结果持久化写到 HDFS。Tez 可以将多个有依赖的作业转换为一个作业,这样只需写一次 HDFS,且中间节点较少,从而大大提升作业的计算性能。使用版本Hive: 2.3.1.hadoop: 2.7.6.Tez: 0.9.1.Java: 1.8前期准备..

2020-09-13 17:24:52 435

原创 sqoop1.4.7导mysql数据到hive报错:ERROR hive.HiveConfig: Could not load org.apache.hadoop.hive.conf.HiveConf

环境:sqoop版本:1.4.7.hadoop2.7.6.hive2.3.1.导入参数:bin/sqoop import --connect jdbc:mysql://192.168.0.55:3306/test?tinyInt1isBit=false --username root --password '123456' --table test_table --fields-terminated-by '\001' --hive-import --hive-table ods.test_tab

2020-09-01 10:10:11 239

原创 clickhouse系列之二:clickhouse遇到的报错问题及解决方法

问题一,启动报错启动参数:sudo clickhouse-server --config-file=/etc/clickhouse-server/config.xml2020.08.20 18:49:28.189321 [ 29338 ] {} <Error> Application: DB::Exception: Effective user of the process (root) does not match the owner of the data (clickhouse). R

2020-08-20 19:10:38 38005 1

原创 elasticsearch安装ik分词插件,拼音分词插件,hanlp分词插件

elasticsearch版本:7.1.1#ik分词插件elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.1.1/elasticsearch-analysis-ik-7.1.1.zip#hanlp分词插件elasticsearch-plugin install https://github.com/KennFalcon/elasticsearch-a

2020-08-17 22:55:25 189

原创 读写锁 ReadWriteLock 获取锁有哪些规则?

在没有读写锁之前,我们假设使用普通的 ReentrantLock,那么虽然我们保证了线程安全,但是也浪费了一定的资源,因为如果多个读操作同时进行,其实并没有线程安全问题,我们可以允许让多个读操作并行,以便提高程序效率。但是写操作不是线程安全的,如果多个线程同时写,或者在写的同时进行读操作,便会造成线程安全问题。我们的读写锁就解决了这样的问题,它设定了一套规则,既可以保证多个线程同时读的效率,同时又可以保证有写入操作时的线程安全。整体思路是它有两把锁,第 1 把锁是写锁,获得写锁之后,既可以读数据又可以

2020-08-14 16:24:57 295

原创 clickhouse系列之一: clickhouse简介与安装

Clickhouse 简介Clickhouse 是一个开源的面向联机分析处理(OLAP, On-Line Analytical Processing)的列式存储数据库管理系统。Clickhouse 的优势:- 写入快、查询快- SQL 支持- 简单方便,不依赖 Hadoop 技术栈- 支持线性扩展- 深度列存储- 向量化查询执行- 数据压缩- 并行和分布式查询- 实时数据更新Clickhouse 的不足:- 不支持事务- 不适合典型的 K/V 存储- 不适合 Blob/Do..

2020-08-13 17:03:05 532

原创 Lock 常用的几种方法,和作用

简介Lock 接口是 Java 5 引入的,最常见的实现类是 ReentrantLock,可以起到“锁”的作用。Lock 和 synchronized 是两种最常见的锁,锁是一种工具,用于控制对共享资源的访问,而 Lock 和 synchronized 都可以达到线程安全的目的,但是在使用上和功能上又有较大的不同。所以 Lock 并不是用来代替 synchronized 的,而是当使用 synchronized 不合适或不足以满足要求的时候,Lock 可以用来提供更高级功能的。通常情况下,Lock.

2020-08-10 12:44:09 2858

原创 java线程池常用的阻塞队列

由于多线程同时从任务队列中获取任务是并发场景,此时就需要任务队列满足线程安全的要求,所以线程池中任务队列采用 BlockingQueue 来保障线程安全.表格左侧是线程池,右侧为它们对应的阻塞队列,可以看到 5 种线程池对应了 3 种阻塞队列,我们接下来对它们进行逐一的介绍。1. LinkedBlockingQueue对于 FixedThreadPool 和 SingleThreadExector 而言,它们使用的阻塞队列是容量为 Integer.MAX_VALUE 的 LinkedBlocking

2020-07-22 16:46:03 2353

原创 Java线程池的四种拒绝策略

拒绝时机新建线程池时可以指定它的任务拒绝策略,以便在必要的时候按照我们的策略来拒绝任务.ThreadPoolExecutor executor = new ThreadPoolExecutor(5, 10, 5, TimeUnit.MILLISECONDS, new LinkedBlockingDeque<>(), new ThreadPoolExecutor.DiscardOldestPolicy());那么拒绝任务的时机是什么呢?线程池会在以下两种..

2020-07-21 15:29:24 1218

原创 Java实现生产者消费者模式的三种方法

前言生产者消费者模式是程序设计中非常常见的一种设计模式,被广泛运用在解耦、消息队列等场景。在现实世界中,我们把生产商品的一方称为生产者,把消费商品的一方称为消费者,有时生产者的生产速度特别快,但消费者的消费速度跟不上,俗称“产能过剩”,又或是多个生产者对应多个消费者时,大家可能会手忙脚乱。如何才能让大家更好地配合呢?这时在生产者和消费者之间就需要一个中介来进行调度,于是便诞生了生产者消费者模式。BlockingQueue 实现生产者消费者模式public static void main(St..

2020-07-15 09:20:48 370

原创 Linux正则表达式基础入门+扩展

最近在看正则表达式部分的东西,有些东西记录下.“ .”(一个点)符号. 点符号用于匹配除换行符之外的任意一个字符。例如:r.t可以匹配rot、rut“ * ”符号. *符号用于匹配前一个字符0次或任意多次“ {n,m}”符号3.1 {n} 匹配前面的字符n次 grep 'ro\{2\}t' 匹配root3.2 {n,} 匹配前面的字符至少n次以上(含n次) grep 'ro\{0,\}t 匹配以r开头,t结尾, 包含o 0到多次'3.3 {n,m} 匹配前面的字符n到m次.“ ^”符号,

2020-06-27 20:18:30 236

转载 shell脚本中$0,$?,$!、$$、$*、$#、$@等的意义

在shell脚本中,会经常用到变量,对一些常用的变量表达式做个记录$$Shell本身的PID(ProcessID)$!Shell最后运行的后台Process的PID$?最后运行的命令的结束代码(返回值)$-使用Set命令设定的Flag一览$*所有参数列表。如"$*“用「”」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。$@所有参数列表。如"$@“用「”」括起来的情况、以"$1" “2"…"2" … "2"…"n” 的形式输出所有参数。$#添加到Shell的参数个数

2020-06-07 23:18:36 327

原创 java单例模式几种常见实现方式

什么是单例模式因进程需要,有时我们只需要某个类同时保留一个对象,不希望有更多对象,此时,我们则应考虑单例模式的设计。单例模式的特点1、单例模式只能有一个实例。2、单例类必须创建自己的唯一实例3、单例类必须向其他对象提供这一实例。单例模式的实现懒汉式(线程不安全)public class SingletonDemo { private static SingletonDemo instance; private SingletonDemo(){ }..

2020-06-05 22:50:14 394

原创 SparkSQL数据DataFrame向ElasticSearch写入的优化,亲测提高数倍

前言最近sparksql写入elasticsearch数据量逐渐增大,所以需要优化写入的速度.先说一下集群情况.es集群:elasticsearch-6.2.4, 机器配置:5台4C*16G阿里云机器.spark: 2.1.3.优化方向从spark参数和es索引两个方向进行优化spark参数es提供了一套完整的hadoop生态支持.可以完整的支持spark读写es.在...

2020-05-01 00:03:17 2010

转载 hive常用字符串函数

字符串长度计算函数:length语法: length(string A),返回值: int说明:返回字符串A的长度hive (default)> select length('aaa');3字符串反转函数:reverse语法: reverse(string A)返回值: string说明:返回字符串A的反转结果hive (default)> select reve...

2020-04-18 15:12:07 317

原创 Java数组模拟简单队列实现(顺序队列,环形队列)

顺序队列实现//使用数组模拟队列class ArrayQue{ //表示数组最大容量 private int maxSize; //队列头 private int front; //队列尾 private int rear; //该数组用于存放数据 private int[] arr; //创建队列的构造器 ...

2020-04-09 22:39:35 136

转载 shell中获取当前日期,下月1日,上月底,上月同期日期,比较两个日期大小

在实际开发过程中会用到一些特定时间,请注意其中下月1日和上月同期日期无法用shell命令直接获取,需做判断1.获取系统当前时间today=`date +%Y%m%d`2.本月1日firstday=`date -d "${today}" +%Y%m01`3.本月月份month=`date -d "${today}" +%m`4.上月月底l_lastday=`date -d "${fi...

2020-03-29 15:01:04 1691

转载 git常用指令

来源: git常用指令图片形式的:文字整理:git config - - 可以配置git的参数,可以使用 git config --list查看已经配置的git参数。其中有三个级别的保存位置,–system(本系统)–global(当前用户,全局)–local(本地配置,当前目录)默认使用–local配置用户名及邮箱git config --global user.na...

2020-03-23 22:01:34 101

原创 flume的ChannelExceptio以及memeryChannel中transactionCapacity和sink的batchsize需要注意事项

最近在做flume的日志收集,在用flume的时候发现一个报错.14 Mar 2020 14:23:58,194 ERROR [SinkRunner-PollingRunner-DefaultSinkProcessor] (org.apache.flume.sink.AbstractRpcSink.process:384) - Rpc Sink k1: Unable to get event ...

2020-03-14 15:06:00 199

原创 sparkstreaming ConcurrentModificationException: KafkaConsumer is not safe for multi-threaded access

最近在测试sparkstreaming的时候发现了一个问题,记录一下环境 spark 2.x, kafka_0.10.x示例代码:val ssc: StreamingContext = new StreamingContext(sparkSession.sparkContext,Seconds(5)) val kafkaBrokers:String = "hadoop01:9092...

2020-02-22 00:18:40 1053

原创 解决spark.rdd.MapPartitionsRDD cannot be cast to streaming.kafka010.HasOffsetRange问题

最近在做sparkstreaming测试的时候,自己出了一个小问题,记录下.贴部分代码:package com.ybs.screen.test.dataimport java.langimport java.util.Propertiesimport com.ybs.screen.constant.Constantsimport com.ybs.screen.model.{Prop...

2020-02-21 20:56:35 2542

转载 FastJson对JSON字符串、JSON对象及JavaBean之间的相互转换

原文链接: 使用FastJson对JSON字符串、JSON对象及JavaBean之间的相互转换FastJson是用于java后台处理json格式数据的一个工具包,包括“序列化”和“反序列化”两部分,它具备如下特征: (1)速度最快,测试表明,fastjson具有极快的性能,超越任其他的java json parser。 (2)功能强大,完全支持java bean、集合、Map、日期...

2020-02-09 16:58:06 160

原创 Scala List的一些常用方法

Scala List的常用方法,梳理出来创建空列表scala> val arr1 = Nilarr1: scala.collection.immutable.Nil.type = List()scala> val arr1 = List()arr1: List[Nothing] = List()创建带有值得列表scala> val arr1 = List("li...

2019-12-22 14:51:08 171

原创 记一次Hive 行转列 引起的GC overhead limit exceeded

在一次hive语句进行行转列操作的时候,几千万的数据量发生了omm, GC overhead limit exceeded. 去网上查找了一下,判断是自己给map端和reduce端的内存太小了,才导致的omm,所以增加map端和reduce端的内存就好了.直接在客户端设置一下.hive> set mapreduce.map.memory.mb=2048;hive> set map...

2019-11-24 16:17:46 1446

原创 sqoop从mysql导入数据到hive时tinyint字段自动变成Boolean解决方案

最近在做sqoop导出数据的时候,mysql中有的字段到hive中自动转换成boolean类型了.这个需要解决,不然数据对不上.查了查官方文档,官方文档里有说明,这里贴一下文档.27.2.5. MySQL: Import of TINYINT(1) from MySQL behaves strangelyProblem: Sqoop is treating TINYINT(1) colum...

2019-09-22 12:43:02 720

原创 SparkSQL读取MySQL数据tinyint字段转换成boolean类型的解决方案

最近在做弄sparksql,在读取mysql数据的时候发现一个问题, 在数据库将字段定义成tinyint,并且长度为1的时候,读取到spark里面,被转换成Boolean类型的字段了.测试表定义CREATE TABLE `test1` ( `id` bigint(4) NOT NULL AUTO_INCREMENT, `name` varchar(36) COLLATE utf8mb4...

2019-09-08 14:39:33 1626

原创 spark写入es报错,[FORBIDDEN/12/index read-only / allow delete (api)]解决方法

最近在进行spark数据写入es的时候,发生了报错,[FORBIDDEN/12/index read-only / allow delete (api)].在网上查了一下,有可能是因为磁盘空间不够,索引变为只读,不可以写入数据,但是能删除数据,修改参数就可以解决.PUT /twitter/_settings{ "index.blocks.read_only_allow_delete":...

2019-08-25 17:18:12 500

原创 sqoop导入数据到hive查询全部为null,sqoop导入到hive数据增多的解决方法

sqoop导入数据到hive查询全部为null.最近在用sqoop导入数据到hive的时候,遇到一个问题.用sqoop将数据导入到hive后,在hive查询,发现数据全部为null.而用sqoop导入命令的时候,没有报错,提示成功bin/sqoop import --connect jdbc:mysql://xxxxxxxxxxxxx:3306/xxxxxx --username xx...

2019-08-18 15:31:29 5046

原创 sqoop运行job避免输入密码的解决方案

最近在增量同步mysql的数据到hive中,用sqoop进行增量导入,将增量任务设置为sqoop的job,每天定时跑sqoop的job就可以了,在创建job的时候sqoop给出提示,不要在命令行使用明文密码.创建job命令:bin/sqoop job --create test01job -- import \--connect jdbc:localhost:3306/test --user...

2019-08-03 18:05:41 1034

原创 sqoop的安装和简单使用案例

概述sqoop是apache旗下一款“Hadoop和关系数据库服务器之间传送数据”的工具。导入数据:MySQL,Oracle导入数据到Hadoop的HDFS、HIVE、HBASE等数据存储系统;导出数据:从Hadoop的文件系统中导出数据到关系数据库mysql等.原理将导入或导出命令翻译成mapreduce程序来实现在翻译出的mapreduce中主要是对inputformat和...

2019-07-20 22:32:56 182

原创 spark读取MySQL的方式及并发度优化

前段时间用sparksession读取MySQL的一个表的时候,出现耗时长,频繁出现oom等情况,去网上查找了一下,是因为用的默认读取jdbc方式,单线程任务重,所以出现耗时长,oom等现象.这时候需要提高读取的并发度.现简单记录下.看sparsession DataFrameReader源码,读取jdbc有三个方法重载.单partition,无并发def jdbc(url: String,...

2019-07-07 16:47:20 4469 1

原创 Azkaban的简单实战案例

Azkaban安装成功以后就可以进行任务调度了,这里简单演示几个调度任务。单一job示例创建文本文件,更改名称为mycommand.job内容如下type=commandcommand=echo 'hello world'将job资源打包成zip文件通过azkaban的web管理平台创建project并上传job压缩包首先创建project上传zip包启动执行job...

2019-06-14 22:20:00 180

原创 Azkaban的简介和安装(3.47.0版本,两个服务模式安装)

Azkaban简介官网: https://azkaban.github.io/Azkaban是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban定义了一种KV文件(properties)格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。它有如下功能特点:Web用户界面方便上传工作流...

2019-06-08 23:46:50 477

原创 sqoop导入hive警告WARN TableDefWriter:Column height had to be cast to a less precise type in Hive

最近在进行用sqoop将业务表数据导入到hive,在导入的时候发现一直在报一个WARN,WARN TableDefWriter:Column height had to be cast to a less precise type in Hive. 具体日志贴图.看到报警以后,查看了hive表的数据,发现数据并没有丢失,又查看了hive表结构,发现很多字段的数据类型发生了改变.在进行表导入的时候...

2019-05-24 22:37:01 1917

clickhouse文档.docx

clickhouse文档,安装和部分数据结构,表引擎介绍.对clickhouse的简单介绍,安装.clickhouse目前是比较火的olap存储引擎.

2020-09-17

Linux系统编译过的hadoop2.7.2jar包

hadoop的jar包,已经经Linux系统编译过的,下载后直接解压就可以用

2018-07-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除