我加入了两个RDD,现在当我尝试访问新的RDD字段时,我需要将它们视为元组。它导致代码不那么可读。我尝试使用'type'来创建一些别名,但它不起作用,我仍然需要作为元组访问字段。知道如何使代码更具可读性吗?
例如- 尝试过滤已加入的RDD中的行时: val joinedRDD = RDD1.join(RDD2).filter(x => x._2._2._5!='temp')
我想用名字代替2,5等。
由于
答案 0 :(得分:0)
明智地使用模式匹配。
val rdd1 = sc.parallelize(List(("John", (28, true)), ("Mary", (22, true)))
val rdd2 = sc.parallelize(List(("John", List(100, 200, -20))))
rdd1
.join(rdd2)
.map {
case (name, ((age, isProlonged), payments)) => (name, payments.sum)
}
.filter {
case (name, sum) => sum > 0
}
.collect()
res0: Array[(String, Int)] = Array((John,280))
另一种选择是使用dataframes抽象而不是RDD并编写SQL查询。