【发布时间】:2016-11-29 15:55:35
【问题描述】:
我在 pyspark 中编写代码,在其中进行过滤、加入、unionall、groupby 操作。
但我注意到在 groupby 操作之前,count() 函数需要 9 分钟,而在 groupby 之后,count() 函数需要 35 分钟。我需要一些关于如何优化 groupby 子句以减少处理时间的建议。
配置参数: 执行器内存 12g 执行人数 50 执行器核心 5 驱动内存 40g 数据大小约 1 TB
以sn-p为例:
dataframeA = hc.sql("select * from tableA")
dataframeB = hc.sql("select * from tableB")
dataframeC = hc.sql("select * from tableC")
dataframeD = dataframeA.unionAll(dataframeB)
dataframeE = dataframeD.join(dataframeC, col1 == col2, 'left_outer')
dataframeF = dataframeE.groupby ([col1, col2]
.agg({
max("col3"),
sum("col4")/ sum("col5"),
...
})
有什么建议吗?
【问题讨论】:
-
能够帮助您发布您的代码(或至少是它的简化案例)
-
添加了代码sn-p供参考。