HIVE数据倾斜问题
HIVE数据倾斜问题
问题状态: 未解决sql
- 背景:HDFS对文件进行了压缩,并且不添加索引。主要用HIVE进行开发。
- 发现的现象:sqoop从Mysql导入数据,根据ID进行平均分割,可是ID分部及其不均匀(我也不知道业务系统怎么搞得)。因此致使reduce出来的文件大小严重不均匀,就是所谓的数据倾斜。
- 致使的问题:写HQL从该表中读取数据,发现整个job很慢。后来我查日志发现,有几个map读取数据很是慢,1G的文件大概须要1个多小时才能读取完毕。
- 问题分析: 因为hadoop对文件进行了lzo格式压缩(lzo格式不支持切割)。运维又没有对文件添加索引,因此这1G的文件必须走一次网络I/O将文件读取到map所在节点,而后再总体读取。因此致使该map很是慢。
- 解决思路:
- 将Mysql中的数据用sqoop分批导入HIVE,高密度的ID拆分为一个任务,低密度的ID拆分为一个任务(我先后分了5个任务,效果显著,可是仍是没有达到理想效果)。控制每一个文件大小在1G一下。
- 经过设置HIVE参数和拆分复杂的HQL,将大文件分割成均匀的小文件。目前还正在解决......
欢迎关注本站公众号,获取更多信息