spark-join/groupby数据集需要很多时间

qc6wkl3g  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(511)

我有两个数据集(表)与35kk+行。
我尝试通过一些id加入(或分组)这些数据集(通常是一对一)
但是这个手术需要很多时间:25+h。
过滤器只能正常工作:~ 20分钟。
环境:emr-5.3.1
hadoop磁盘tribution:amazon
应用程序lications:ganglia 3.7.2,Spark2.1.0,齐柏林飞艇0.6.2
示例类型:m3.xlarge
代码(groupby):

Dataset<Row> dataset = ...
...
.groupBy("id")
.agg(functions.min("date"))
.withColumnRenamed("min(date)", "minDate")

代码(联接):

...
.join(dataset2, dataset.col("id").equalTo(dataset2.col("id")))

另外,我在emr日志中发现了以下消息:

HashAggregateExec: spark.sql.codegen.aggregate.map.twolevel.enable is set to true, but current version of codegened fast hashmap does not support this aggregate.
aij0ehis

aij0ehis1#

可能存在数据被扭曲的可能性。我们面对这个问题。检查你的连接栏。这种情况主要发生在连接列具有空值的情况下
检查数据存储模式:

select joining_column, count(joining_col) from <tablename>
group by joining_col

这将使您了解联接列中的数据是否均匀分布

相关问题