自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 spark5种去重方式,快速去重

双重group by将去重分成了两步,是分组聚合运算,group by操作能进行多个reduce任务并行处理,每个reduce都能收到一部分数据然后进行分组内去重,不再像distinct只有一个reduce进行全局去重.sql中最简单的方式,当数据量小的时候性能还好.当数据量大的时候性能较差.因为distinct全局只有一个reduce任务来做去重操作,极容易发生数据倾斜的情况,整体运行效率较慢.DataFrame中,可以先将分区内数据进行排序,然后通过dropDuplicates将重复的数据删除.

2023-01-01 14:13:17 7771

原创 Java 堆排序原理 & 图文详解 & 代码逻辑

从3开始, 继续维护堆的性质, 并且交换位置, 最终得到如下结果: 8 7 4 6 1 2 3 5。因为 大顶堆 需要满足条件: 父节点比左右孩子节点大, 我们从根节点开始遍历, 确认是否满足.接下来, 我们只需要将根节点值交换与最后一个值交换.得到了 3 7 8 6 1 2 4 5 9。此时就需要我们去做交换, 让从左右孩子中找到最大的那个节点, 并与根节点做交换.继续交换根节点和最后一个节点的位置, 得到5 7 4 6 1 2 3 8。,并且满足每一个父节点均大于左右孩子节点.

2024-12-29 17:06:17 685

原创 Java使用JNI调用C++代码

用于定义模块名如(thmisapi), 他会影响生产的包装袋吗和动态链接库的名称.(可选, 非必须, 但是一般推荐使用)让SWIG解析并包装指定头文件的内容。

2024-12-27 19:59:00 1047

原创 Spark dataframe写parquet, 并用zstd压缩

经测试, ZSTD压缩方式 + parquet存储, 与 ORC存储 + snappy压缩的压缩比相差不多。

2024-08-28 15:52:32 351

原创 Spark Hive SQL parse_url获取HOST parse_url(referrer,‘HOST‘) 转为java代码

【代码】Spark Hive SQL parse_url获取HOST parse_url(referrer,'HOST') 转为java代码。

2023-12-12 19:24:28 598

原创 正则解析Cookie取其中BDUSS/CUID等,含分号;;和不含分号;;情况都包含

有两种情况, 一个是BDUSS后跟着分号,有别的数据,如: CUID. 第二个是BDUSS结尾.后面没有分号.以上两种正则均可解析取出正确的BDUSS。

2023-08-30 16:26:13 312

原创 java/scala 16进制转10进制代码,解决Exception in thread “main“ java.lang.NumberFormatException: For input strin

16进制转10进制的3种方法, Integer.parseInt(xxx,16), Long.parseLong(xxx,16), 并解决Exception in thread "main" java.lang.NumberFormatException: For input string.如果16进制数过大, 转10进制会报错, 则需要使用BigInteger来解决.

2023-06-16 14:34:02 518

原创 hive写文件如何设置为Parquet并且开启Snappy压缩

其中,parquet.compression设置为snappy表示使用Snappy压缩数据。如果不设置该属性,则默认是不压缩的。开启的话只需要开启压缩参数即可. insert overwrite directory xxx stored as parquet tablproperties("parquet.compression"="snappy"),insert overwrite directory xxx using parquet options("compression"="snappy")

2023-05-08 15:25:30 1241

原创 解决HIVE挂载Parquet报错QueryExecutionException/MutableLong cannot be cast to xxx expressions.MutableInt

QueryExecutionException: Encounter error while reading parquet,ParquetDecodingException: Can not read value,MutableLong cannot be cast to org.apache.spark.sql.catalyst.expressions.MutableInt报错解决办法.parquet和hive底层数据结构不一致.强制cast数据结构解决

2023-04-27 10:53:10 809

原创 Spark JVM内存结构及解决OOM(java.lang.OutOfMemoryError: Java heap space)内存溢出办法

代码中对象/数据结构等用到的内存只有40%. 但是项目中DataFrame, JOIN,Map/ArrayList/String等.这些都大大占用内存.报了java.lang.OutOfMemoryError: Java heap space.user memory, 默认为0.4 (40%). 通常我们代码中的数据结构是使用此部分内存.Executor内存分为4部分.通过增加堆外内存和User Memory解决.减少代码中的GC,避免了OOM的情况.完美解决OOM,Java Heap Space

2023-04-13 20:48:35 1419

原创 Scala的Jackson解析String失败的解决办法com.fasterxml.jackson.core.JsonParseException

com.fasterxml.jackson.core.JsonParseException: Illegal unquoted character ((CTRL-CHAR, code 8)): has to be escaped using backslash to be included in string value. json中存在Ascii码值为32(十进制)以下的控制字符,如换行、文件分隔符等,需要将其替换掉,存在文件控制符FS,存在空格,换行符,制表符等,其是不可见字符,正则替换掉即可

2023-03-22 11:56:52 2010

原创 Spark 判断目录是否存在, 若存在则删除,若不存在则创建

【代码】Spark 判断目录是否存在, 若存在则删除,若不存在则创建。

2023-03-08 20:18:24 360

原创 HR面试经验总结 | HR面试常问问题

自我介绍,聊一下职业规划,你怎么看待加班?你希望接下来的公司是怎么样的?你遇到过比较棘手的问题是什么?怎么去解决的?什么时候可以入职,你得到期望薪资是多少,你觉得你能胜任这份工作吗?原因是什么?你觉得你是一个什么样的人,你平时的兴趣爱好是什么,有接触过和这份工作类似的工作吗?有什么体会?详细说一下,你对我们公司有了解吗,手上现在有其他Offer吗?后续会继续看机会吗?你觉得前面面试官怎么样?在工作中你做过最有成就感的项目是什么?给你一份任务,你会怎么做?你希望通过这份工作获得什么?有什么优缺点?问面试官问题

2023-03-08 16:02:42 1056

原创 HDFS集群容量监控脚本

每天将HDFS集群每个目录下容量信息写入到MySQL,然后读取MySQL信息发送邮件到部门邮件组。

2023-03-02 20:04:29 234

原创 XML格式文件中 & (与)号 / Map<String, String> 解析转义失败解决办法

&(与)号 / Map 在XML中的正确转义方式, 及正确代码格式示例.

2023-02-28 20:27:24 402

原创 ES(ElasticSearch)调优/倒排索引/脑裂/选举/索引过多/冷热数据分离 等知识点总结

ES优化总结,ES调优、rolloverapi、使用别名进行ES索引管理、ES force_merge api、ES shrink api、冷热数据分离、curator、ES分词、倒排索引、ES索引多了怎么办、ES脑裂、什么是脑裂、脑裂产生原因、网络原因影响脑裂、ES节点负载、ES选举机制、ES如何预防脑裂、ES如何分离角色、ES预防脑裂参数配置

2023-02-24 12:08:18 1836

原创 Scala List与Java List相互转换及代码示例详解

前提: 导入Maven包 (地址: https://mvnrepository.com/artifact/org.scala-lang/scala-library). java arraylist转为scala list, scala list转为java list示例详解.scala和java list互转语法

2023-02-24 11:58:40 767

原创 Linux、MAC避免复杂SSH语句,快速登录跳板机方法

我们登录跳板机的时候, 需要使用到 ssh user@xxx.xxx.com 的命令, 但是每次都这样非常麻烦,此时就可以使用alias方式来避免长命令的输入.具体操作如下。

2023-02-23 11:27:44 839

原创 Spark show展示所有字段,控制输出行数(不隐藏字段)

当输出字段过多或者过长时, spark会默认隐藏后面的字段,不好debug,我们只需要在 show() 括号内输入truncate = false即可. 默认为true, 为true时则隐藏.控制输出行数并且展示所有字段,不进行隐藏

2023-02-16 19:41:50 3279

原创 java、scala带除号(/)和点(.)的String分数(1/2 , 2/3 , 1.0/2.0 , 2.0/3.0 ...)转小数或数字(Double、Float、Int等)失败情况的解决办法

在开发中, 发现将String: 1/2 或者1.0/2.0 转为Double会直接报错。完美解决Exception in thread "main" java.lang.NumberFormatException: For input string: "1/2"报错问题.成功转为小数. scala隐式转换分数为小数时失败,但不报错

2023-02-13 03:01:40 317

原创 干货 | HIVE表常用操作大全(二)

hive动态分区插入,hive动态插入的分区数大于100,hive修改最小文件merge大小,hive修改reduce task数,hive并行执行,hiveMapJoin机制,hive修改队列,hive设置executor大小set mapreduce.job.queuename,hive设置set spark.yarn.executor.memoryOverhead

2023-02-03 14:41:35 157

原创 干货 | Linux Shell命令及脚本大全(三)

linux查看物理cpu数,linux查看核数,按列排序,删除包含某个字符串的行,查看哪些东西用了如下字符/命令:,查看Linux内核版本的2种方式,查看Linux系统版本的3种方式,查看文件详细信息(权限对象、基本权限类型),查看目录的详细信息,添加用户,组操作 读:r 4 写:w 2 执行:x 1。属主:u 属组:g 其他人:o。创建一个名为user01的用户。rw-r–r-- 为权限。rwx 属主权限。-k1 就是第一列排序。r-- 其他人权限。alice 属主。

2023-02-03 14:32:20 126

原创 干货 | Linux Shell命令及脚本大全(二)

直接将文件清空:,截取csv文件的某几列到指定文件中,将文件中所有字符替换为换行符,去除双引号,单引号,去除字符前所有0,在多个目录下同文件名下添加,在多个目录下同文件名下修改,在多个目录下同文件名下删除指定行,查看hdfs是否存在某个文件,查看hdfs是否存在某个目录,以小时循环,批量修改内容,vim中批量修改

2023-02-03 14:30:40 1114

原创 Spark2升级为Spark3 UDF org.apache.spark.sql.AnalysisException: You‘re using untyped报错解决方案

Spark2升级Spark3 org.apache.spark.sql.AnalysisException: You're using untyped Scala UDF, which does not have the input type informationUser class threw exception: org.apache.spark.sql.AnalysisException: spark_catalog requires a single-part namespace,but got

2023-01-31 15:46:14 1246

原创 Spark udf合并两个Array / List / Seq为一个Array / List / Seq,将所有元素放到一个Array / List / Seq中

但是Spark中没有实现类似功能的算子, 于是自己写了一个UDF去实现, 话不多说, 贴代码供大家参考.即: 合并两个Array[String]

2023-01-16 16:03:31 660

原创 Sublime Text操作多行添加递增数字

mac / windows sublime text3/4d 选中指定行然后command + shift + p (Windows 用户使用: ctrl + shift + p), 再输入Arithmetic然后回车选中。

2023-01-12 11:20:49 2161

原创 Spark优化大全总结实操,含数据格式/数据倾斜/算子优化/Join优化/参数调优等

Spark优化总结大全,含数据格式/数据倾斜/算子优化/Join优化/参数调优等,spark任务重RDD持久化数据在Executor内存中占用比例为60%,当数据量较大内存放不下时,就会溢写到磁盘,如果spark任务中有较多需持久化的RDD,建议调大此参,避免内存不足时数据只能写磁盘的情况.若没有或者发现作业频繁gc或者运行较慢时,则可适当调小此比例。如果觉得数据发生了倾斜(数据分布不均,很多数据都打到了一个分区中),建议在Join之前先进行Repartition操作,增加分区数,这样可以将分区内的数据打散

2022-12-28 16:46:31 3407

原创 Canal数据格式及写入Kafka数据样例

canal中ts,es区别具体insert/update/delete的变更数据,可为多条,1个binlog event事件可对应多条变更,如批处理.操作类型(INSERT,UPDATE,DELETE,QUERY,TRUNCATE)时间戳(13位),canal收到这个binlog,构造自己协议对象的时间.是否是ddl变更操作,比如create table/drop table。mysql binlog里原始的时间戳,也就是数据原始变更的时间。修改前的字段数据(id变更前的值)data中每个字段对应的格式类型

2022-12-28 10:36:40 2027

原创 Zookeeper查看并修改Canal位点position信息

【代码】Zookeeper查看并修改Canal位点position信息。ZK查看Canel位点信息

2022-12-27 18:59:18 580

原创 干货 | HIVE表常用操作大全(一)

HIVE操作外部表,HIVE修改外部表为内部表,删除hive表分区,HIVE修改内部表为外部表,HIVE设置内存大小,HIVE设置非严格模式,HIVE设置执行引擎,HIVE union all报错,将yyyy-MM-dd HH:mm:ss的timestamp转化为yyyyMMdd或者yyyyMMddHH,timestamp转换为yyyyMMdd/yyyy-MM-dd,impala更新数据,csv建表语句,计算分钟差,列转行,oalesce,nvl的坑,新增字段,增加分区,eeline重定向,设置队列名

2022-12-23 17:47:36 892

原创 记录解决HashMap与HashPartition中数据量过大发生Hash冲突问题

当HashMap的Key是较长的字符串且数据量较大时,极容易出现Hash冲突,此时建议将Key做进一步处理, 如MD5后再塞回,可降低Hash冲突率,减少Hash重复的数量。

2022-12-22 20:46:16 430

原创 干货 | Linux Shell命令及脚本大全(一)

将每一行前两个(前n个)字符替换为空,将每一行最后一个字符删除,删除某个文件中指定字符,统计某个文件的行数/列数,截取文件中每一行指定字符串之前的字符串:,查看机器ip,shell脚本去重,shell去除空行,查看指定内容在哪一行,通过行号删除文件指定行,一次解压多个文件到指定目录下,遍历某个目录下的多级目录并得到文件名,将一行很长的数据根据某个字符切分成多行,wget下载重命名/下载修改目录路径,unzip解压重命名/解压到指定目录,显示第3-4行数据,显示空白行,将一个大文件按照行数进行切割

2022-12-21 18:07:20 627

原创 使用Logstash操作Elasticsearch时ruby语法常用操作

Elasticsearch Logstash ruby操作list,ruby for循环,ruby格式化时间(YYYY-mm-ddTHH:MM:SS),ruby获取现在时间并格式化,ruby转换时间戳,,ruby转换时间格式,转换为%Y-%m-%dT%H:%M:%S,转换为时间戳,ruby截取字符串长度,ruby循环,ruby数组操作,rubyjson操作,ruby读json,ruby写json,ruby读写json,rubymd5加密,ruby连接mysql jdbc,ruby同时启动多个logstash

2022-12-21 10:35:25 1248

原创 浅谈Spark groupBy、reduceByKey与aggregateByKey,解决频繁Full GC问题

groupBy效率较慢,可以使用reduceByKey / aggregateByKey替代groupBy, 因为这两个算子可以进行预聚合. 但是需要先将DataFrame转为RDD.Spark中建议不要使用过于复杂的数据结构,如: HashMap[String, String], ArrayList等,建议使用最简单的数据结构.预聚合部分是将多个String转为Array[String],减少了数据结构中Array的使用.后面再聚合部分是将预聚合中的Array[String]进行再聚合.

2022-12-20 20:30:42 1325 1

原创 对比Spark repartitionAndSortWithinPartitions 与 repartition + sortByKey,附代码示例

我们刚讲到 repartition 源码中用的是 Murmur3Hash 方式进行Hash的, 这也无法避免次问题, 那么repartition 和 repartitionAndSortWithinPartitions都无法完全避免HashCode冲突的问题, 我们应该怎么办呢?通过代码我们可以看到, 这里是使用对logid进行hashCode, 然后取 % 进行分区, 当数据量过大时, 就会出现Hash冲突的问题.当然, 还可尝试先md5再hashCode,效果与上述结果类似.

2022-12-20 11:17:22 1055

原创 Kafka组件、安装、常用操作命令、分区计算及负载均衡等干货说明

Kafka是什么,集群核心组件,优点,Topic,Broker,Partition,Offset,Zookeeper(ZK),Producer,Consumer(Group),Kafka的安装,Kafka配置环境变量,Kafka常用操作命令,启动命令,查看服务器中所有topic,创建topic、删除topic、shell命令发送、消费信息,对分区数进行修改,Logs日志查看,Segment,数据存储机制,解决负载均衡,分区数计算,数据分区,保证数据不丢失,Receiver和Direct方式,存储和实时处理

2018-11-28 11:07:06 1966 1

空空如也

空空如也

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

TA关注的人

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