我有两个数据集(表)与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.
1条答案
按热度按时间aij0ehis1#
可能存在数据被扭曲的可能性。我们面对这个问题。检查你的连接栏。这种情况主要发生在连接列具有空值的情况下
检查数据存储模式:
这将使您了解联接列中的数据是否均匀分布