我可以通过他们的主键很好地加入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表。
任何帮助都会很棒。
答案 0 :(得分:0)
由于Spark需要将具有相同密钥的项目混洗到同一分区,因此您需要将密钥作为PairRDD中元组的第一个元素。对于您的示例,可能最简单的方法是将RDD转换为具有相同的主键,并将整个案例类保持为值。如果你好奇的CoGroupedRDD.scala有一些实现细节。