是否可以通过Spark自定义连接(不通过主键)?

时间:2015-02-24 22:06:14

标签: apache-spark apache-spark-sql

我可以通过他们的主键很好地加入Pair RDD,但是可以根据值对象的某些属性加入吗?

例如,假设我有一个List或两个对象的Pair List。

TV_station_information
    String station_name
    String call_sign


View_information
    String timeBlock
    String station_name
    int number_of_viewers

我想加入TV_station_information station_name与View_information station_name匹配的这两个列表。

我无法创建View_information station_name的密钥,因为每个工作站都有大量的时间块。此外,我还通过Spark在其他表中加入了View_information表。

任何帮助都会很棒。

1 个答案:

答案 0 :(得分:0)

由于Spark需要将具有相同密钥的项目混洗到同一分区,因此您需要将密钥作为PairRDD中元组的第一个元素。对于您的示例,可能最简单的方法是将RDD转换为具有相同的主键,并将整个案例类保持为值。如果你好奇的CoGroupedRDD.scala有一些实现细节。