我试图通过读取为DataFrames来比较两个table()。对于这些表中使用主键连接的每个公共列,请说order_id与其他列(例如order_date,order_name,order_event)。
我正在使用的Scala代码
int[] triangles = {
// Back face
0, 3, 2,
0, 2, 1,
...
...
};
上面的代码对于中等数据集工作正常,但是随着我的新旧表中列和记录的数量增加,执行时间也在增加。任何形式的建议表示赞赏。 谢谢你。
答案 0 :(得分:0)
您可以执行以下操作:
1.在主键上外部加入新旧数据框
joined_df = df_old.join(df_new, primary_key, "outer")
2.如果可能,将其缓存。这样可以节省很多时间
3.现在,您可以遍历列并使用spark函数比较列(.isNull
用于不匹配,==
用于匹配等)
for (col <- df_new.columns){
val matchCount = df_joined.filter(df_new[col].isNotNull && df_old[col].isNotNull).count()
val nonMatchCount = ...
}
这应该相当快,尤其是当您可以缓存数据帧时。如果不能,那么最好将连接的df保存到磁盘上,以免每次都洗牌