一、问题
一位同事遇到的问题
他调试spark sql任务时发现,任务并行度达到了恐怖的81835个,运行速度自然也快不到哪去。spark任务界面如下图所示
二、解决
1.排查过程
先看了下入参的hive表下的文件个数
su hdfs
hdfs dfs -count /user/hive/warehouse/database_name.db/table_name
- 发现对应的文件数刚好是和spark任务并行度一样的81835
- 这说明sparksql里的where的过滤没有生效
又看了下where里的字段,发现并不是分区字段
2.解决方式
把where后的过滤字段改成hive分区字段
改成分区字段后,并行度就减少到200左右了