增加spark中的分区数

vx6bjr1n  于 2021-06-28  发布在  Hive
关注(0)|答案(0)|浏览(149)

我使用配置单元对一个项目执行sql查询。我使用了orc和50k跨距作为我的数据,并使用这个配置创建了hiveorc表,其中有一个特定的日期列作为分区。
现在我想使用sparksql对在相同数据上运行的相同查询进行基准测试。
我执行了以下查询

val q1 = sqlContext.sql("select col1,col2,col3,sum(col4),sum(col5) from mytable where date_key=somedatkye group by col1,col2,col3")

在配置单元中,此查询需要90秒。但是对于相同的查询,spark需要21分钟,在查看作业时,我发现问题是因为spark创建了2个阶段,在第一个阶段,它只有7个任务,每个任务对应orc文件中给定分区内的7个数据块。这些块的大小不同,一个是5mb,另一个是45mb,正因为如此,散乱的块会占用更多的时间,导致占用太多的时间。
如何在spark中缓解此问题。如何手动增加分区数,从而增加阶段1中的任务数,即使给定查询范围只有7个物理块。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题