美文网首页
数据倾斜--数据采集阶段

数据倾斜--数据采集阶段

作者: 大空翼123 | 来源:发表于2022-01-25 09:44 被阅读0次


1.业务数据Sqoop导入数据时倾斜

首先了解Sqoop两个参数-m和--split-by参数的使用:

1. 这俩参数一般是放在一起使用

2.-m:表明需要使用几个map任务并发执行

m,–num-mappers 启动N个map来并行导入数据,默认是4个,最好不要将数字设置为高于集群的节点数

3.--split-by :–split-by 表的列名,用来切分工作单元,一般后面跟主键ID

拆分数据的字段. -m设置为4,数据有100条,sqoop首先会获取拆分字段的最大值,最小值,步长为100/4=25;

那么第一个map执行拆分字段值为(1,25)之间的数据

第二个map执行拆分字段值为(26,50)之间的数据

第三个map执行拆分字段值为(51,75)之间的数据

第四个map执行拆分字段值为(76,100)之间的数据

方案1.如果数据的主键字段本来就不均衡则sqoop运行时机会产生数据倾斜

解决方案:

                查询语句中使用row_number产生一个新的排序字段rk,再指定–split-by rk,如此可以均匀切分数据

select  *, rank() over( ) as 'rk' FROM user_info 

sqoop import \

--connect jdbc:mysql://hadoop102:3306/test \ 连接

--username root \ 账号

--password 123456 \ 密码

--target-dir /sqoop/optputs \ 目标文件夹

--delete-target-dir \ 删除原有的文件夹

--query "select * , rank() over( ) as rk   from user_info  where \$CONDITIONS"\ 查询的sql语句

--num-mappers 1 \ 设置map数

--split-by rk  \按照rk切分

--fields-terminated-by '\t' \ 存储数据的字段间隔

方案2.有比较均匀的索引

        若表中有比较均匀的索引 index2 按照index2 split-by仍然跑的很慢

        解决方案 :

                                可能mysql优化器选择的不是最佳索引因此可以采用 force index(index2) 强制使用index2为执行查询的索引

sqoop import \

--connect jdbc:mysql://hadoop102:3306/test \ 连接

--username root \ 账号

--password 123456 \ 密码

--target-dir /sqoop/optputs \ 目标文件夹

--delete-target-dir \ 删除原有的文件夹

--query "select * , rank() over( ) as rk   from user_info force index(index2) where \$CONDITIONS"\查询的sql语句

--num-mappers 1 \ 设置map数

--split-by rk  \按照rk切分

--fields-terminated-by '\t' \ 存储数据的字段间隔

方案3.采用FlickCDC

使用FlinkCDC配合flink CheckPoink 读取mysql数据转为Flink的DataStream,在使用Flink数据倾斜处理办法,最后写入HDFS。

2.埋点数据数据传输倾斜

埋点数据量非常大,可以采用分治思想,采用Flume配置kafkaChannel把不同的event发送给不同的kafkaTopic

event传输单元,Flume数据传输的基本单元,以Event的形式将数据从源头送至目的地。Event由Header和Body两部分组成,Header(最常用时间戳)用来存放该event的一些属性,为K-V结构。Body用来存放该条数据,形式为字节数组。可以跟去header中key值的不同发往不同的kafkaTopic

Kafka分区规则

若key为空,则随机发往各个分区

Key不为空根据类似hash(key)对分区数取模发往不同分区。

相关文章

  • 数据倾斜--数据采集阶段

    1.业务数据Sqoop导入数据时倾斜 首先了解Sqoop两个参数-m和--split-by参数的使用: 1. 这俩...

  • 快速完成倾斜摄影视频动画录制

    序: 倾斜摄影数据采集制作完成后,如何使用?很多倾斜摄影数据采集者需要给别人看自己的数据成果,想录制漂亮的视频,手...

  • (2)数据倾斜

    1、数据倾斜原因 数据倾斜主要是由于在reduce阶段,某些值过多导值相应的reduce处理缓慢导致的。数据的分散...

  • 大数据开发有那些难点?

    今天我们聊聊大数据开发,大数据开发共有四个阶段:数据采集,数据汇聚,数据转换和映射,数据应用 。那么每一个阶段,他...

  • 数据倾斜(五):Spark是如何解决数据倾斜的

    Spark数据倾斜表现 Spark数据倾斜原理 Spark数据倾斜例子 Spark数据倾斜解决方案 七、Spark...

  • 数据仓库搭建

    全流程:数据采集->数据存储->数据分析->数据呈现 数据采集 首先我们从数据采集来说,数据采集的数据主要来自于日...

  • 数据采集02

    在数据采集阶段主要工作是全面了解产品和用户。 在数据加工阶段,主要工作是对用户和物品分门别类。 在数据决策阶段,主...

  • 数据技术篇

    大数据阶段 数据采集层(1)数据库同步(DataX/同步中心)(2)消息中间件(离线、实时) 数据计算层 数据服务...

  • 产品要懂点数据分析(三)- 分析过程

    数据采集 数据分析的对象就是数据,通过数据采集来获得数据。数据采集在《产品要懂点数据分析(一)-数据采集和数据指标...

  • 倾斜摄影数据成千上万的根节点加载速度慢怎么办?

    序: 倾斜摄影的数据采集和处理已经非常成熟了,不论是smart3d还是photoscan,pix4d等倾斜摄...

网友评论

      本文标题:数据倾斜--数据采集阶段

      本文链接:https://www.haomeiwen.com/subject/zhkihrtx.html