我有2个 35kk + 行的数据集(表格)。
我尝试通过某个ID 加入(或分组)此数据集。 (共同点是一对一)
但是此操作需要很长时间: 25+ h 。
过滤器只能正常工作: ~20分钟。
环境:emr-5.3.1
Hadoop发布:亚马逊
应用程序:Ganglia 3.7.2,Spark 2.1.0,Zeppelin 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.
答案 0 :(得分:1)
数据可能会被歪斜。我们面对这个。检查您的加入列。如果您的加入列具有NULLS
,则会发生这种情况使用以下方法检查数据存储模式:
try: # In order to be able to import tkinter for
import tkinter as tk # either in python 2 or in python 3
except ImportError:
import Tkinter as tk
class MyLabel(tk.Label):
def __init__(self, master, var="", *args, **kwargs):
tk.Label.__init__(self, master, *args, **kwargs)
self.var = var
def __setattr__(self, name, value):
self.__dict__[name] = value
if name == 'var':
self.do_stuff()
def do_stuff(self):
self['text'] = self.var
if __name__ == '__main__':
root = tk.Tk()
demo = MyLabel(root, "Value")
demo.pack()
demo.var = "New Value"
tk.mainloop()
这将让您了解加入列中的数据是否均匀分布