【发布时间】:2020-11-13 06:18:50
【问题描述】:
我正在运行下面的 sql,其中表中的数据在 4,34,836,959 记录附近。需要 3 多分钟才能得到结果。
select distinct col_1,col_2,col_3,col_4,col_5,
to_date(concat(year(col_6),'-',month(col_6), '-1')) as col_6_new,col_7,
cast(first_value(col_11) over (partition by col_1,col_2,col_5,col_4,concat(year(col_6),'-',month(col_6)) order by col_6) as double) as col_9,
cast(first_value(col_11) over (partition by col_1,col_2,col_5,col_4,concat(year(col_6),'-',month(col_6)) order by col_6 desc) as double) as col_10,
min(to_date(concat(year(col_6),'-',month(col_6), '-1'))) over (partition by col_1,col_2,col_5,col_4) as col_8
from my_table
当我从后台检查执行时,我可以看到一次只有 1 个 Job 和 1 个 Stage 正在运行。有没有办法并行化这个?
我什至尝试了下面的代码,但作业/阶段没有并行运行。
spark.sql("set hive.exec.parallel=true")
spark.sql("set hive.exec.parallel.thread.number=16")
spark.sql("set hive.vectorized.execution = true")
spark.sql("set hive.vectorized.execution.enabled = true")
我使用的 Spark 版本是2.3。
非常感谢任何帮助。
【问题讨论】:
标签: sql performance apache-spark hive