以可读的方式访问连接的 RDD 字段

Access joined RDD fields in a readable way

我加入了 2 个 RDD,现在当我尝试访问新的 RDD 字段时,我需要将它们视为元组。它导致代码不那么可读。我尝试使用 'type' 来创建一些别名,但是它不起作用,我仍然需要以元组的形式访问这些字段。知道如何使代码更具可读性吗?

例如 - 当尝试过滤连接的 RDD 中的行时: val joinedRDD = RDD1.join(RDD2).filter(x=>x._2._2._5!='temp')

我想使用名称而不是 2,5 等

谢谢

明智地使用模式匹配。

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))

另一种选择是在 RDD 上使用 dataframes 抽象并编写 sql 查询。