1

我在hadoop集群上运行apache spark,使用yarn。我有一个大数据集,大约有 1.6 亿条记录。我必须执行自我加入。连接是在 1 列 (c1) 的完全匹配、日期重叠匹配和至少 2 列中的至少 1 列的匹配上完成的(比如说 c3 或 c4)。

我已经从 RDD 中的 HBase 读取数据并将该 RDD 转换为 DATASET,然后我进行了连接。所以我的问题是:

1)如果我在进行连接之前对 c1 上的 rdd 进行分区(这必须始终匹配)会有所帮助,这样 spark 只会加入分区而不是对周围的所有东西进行洗牌吗?

2)我也通过使用键来做到这一点,例如:c1+c3 和 c1+c4 然后通过键进行连接,但是我必须通过日期重叠过滤所有结果,我认为添加日期重叠联接将导致生成的记录更少。

3)有没有一种有效的方法来进行自我连接,我匹配确切的列值,但我也在其他列之间进行一些比较?

4

0 回答 0