大数据
文章平均质量分 78
soaring0121
这个作者很懒,什么都没留下…
展开
-
spark作业序列化问题解决方案
问题现象及原因开发spark作业过程中经常会遇到序列化问题,并出现Task not serializable、java.io.NotSerializableException这样的报错。org.apache.spark.SparkException: Task not serializable at org.apache.spark.util.ClosureCleaner$.ensureSerializable(ClosureCleaner.scala:416) at org.apache.s原创 2021-11-24 15:56:30 · 1845 阅读 · 0 评论 -
解决spark streaming 聚合算子(shuffle)并行度200及缓存buffer不断增大的问题
问题现象: spark流式计算中做聚合需要使用 group by算子,我在使用过程中遇到一些问题,通过stage图可以看出2个问题:1. 聚合算子每个批次shuffle write的数据量直线上升,这样会导致算子得效率逐渐降低,甚至会导致oom2.聚合算子(shuffle)的并行度是200,即使设置spark.sql.shuffle.partitions=10也不生效。200并行度会增加调度压力,并且会把并行度传递到下游(如果不做repartition)。我的业务中会把数据写入iceberg..原创 2021-11-17 17:43:37 · 1935 阅读 · 0 评论 -
HIVE Sql 笛卡尔积关联导致查询过慢问题优化
大数据开发过程中可能会遇到关键词或敏感词匹配这种场景,具体来说会有两张表:a表:包含content字段,数据量在百万级b表:包含word字段,数据量为数万条,都是要匹配的敏感词目标需求是把含有敏感词content都匹配出来,查询sql:select a.content, b.wordfrom aleft join bon 1=1where instr(a.content, b.word) > 0这种笛卡尔积的查询方式会关联出数百亿条数据,并且通过运行日志发现只有1个map原创 2021-06-25 11:56:35 · 2983 阅读 · 0 评论 -
Hive分区表增删字段(解决alter table失败问题)
假设我们有个内部表如下:CREATE TABLE `db_name.user_table_name`( `id` string, `user_name` string, `uid` string)PARTITIONED BY (`date` string)ROW FORMAT DELIMITED FIELDS TERMINATED BY '\001' COLLECTION ITEMS TERMINATED BY '\002' STORED AS PARQUET;一般情况下,如果原创 2020-12-02 17:33:29 · 2293 阅读 · 0 评论 -
Spark Sql性能调优问题
首先我的业务场景是对大量的数据(百万级)进行cpu密集型的计算,一次全量计算需要8个小时左右。计算结果分别简单处理后写入hive和Es。在使用spark sql处理时遇到了两个性能问题:1. 由于单次计算非常耗时,因此使用dataframe.cache()后再分别写入hive和ES,但实际运算了两遍,缓存没有按预想的生效。2. 全量计算非常耗时,因此想要进行增量计算,即第一次全量计算,之后选择没计算过得计算。使用了case when, 和spark.sql.function中的when otherw原创 2020-09-08 01:22:08 · 678 阅读 · 0 评论 -
Spark Structured Streaming特性详解
本文所有内容是基于spark 2.4.3版本官方文档Structured Streaming provides fast, scalable, fault-tolerant, end-to-end exactly-once stream processing without the user having to reason about streamingStructured Stream...原创 2020-01-10 22:03:59 · 1015 阅读 · 0 评论 -
大数据开发遇坑大杂烩
本文用于记录开发过程中使用到的大数据工具包括Hive、Presto、Spark、Flink、ES、Hadoop等遇到的问题解决方案原创 2019-12-20 17:04:55 · 1757 阅读 · 0 评论 -
Hive/Spark/Presto/标准SQL实现行转列和列转行
假设有以下两个表格,分别为vtable和htable,期望使用SQL实现相互转化,本文将展示如何分别使用标准SQL、Presto、和Hive实现。vtable uid key value 101 c1 11 101 c2 12 101 c3 13 102 c1 21 102 c2 22 ...原创 2019-08-20 18:45:49 · 8839 阅读 · 0 评论 -
关于PRESTO SQL疑问和解答
string类型时间如何转换为timestamp和date类型? 使用cast函数 CAST(t as timestamp) CAST(t as date) 如何求两个时间的差值? 使用函数:date_diff(unit,timestamp1,timestamp2)→ bigint date_diff('minute', CAST('2019-02-25 15:30:20'AS...原创 2019-03-05 19:21:51 · 1258 阅读 · 0 评论 -
Hive SQL语法报错 及相应解决方法
Hive SQL语法与经常用的mysql语法具有一定差异性,按照写mysql的习惯写出的sql经常报错,且报错很难看出问题原因,因此在此记录出现问题的现象和解决方式Error: Error while compiling statement: FAILED: ParseException line 3:2 cannot recognize input near '(' 'SELECT' 'a'...原创 2019-02-21 18:19:54 · 10301 阅读 · 1 评论 -
新版本 Kafka Consumer 的设计原理
相对Producer来说,Consumer使用和设计类似,但更为复杂。因此将Consumer相关知识总结一番。顾名思义,consumer就是读取kafka集群中某些topic消息的应用程序。consumer有两个版本,老版本用Scala语言编写,其api包名为kafka.consumer.*, 分别提供high-level和low-level两种API,其缺点是用户必须自行实现错误处理和故障转...原创 2018-08-01 22:46:32 · 3399 阅读 · 0 评论