Access以可读的方式访问RDD字段

时间:2015-04-19 09:52:43

标签: scala join tuples alias rdd

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

例如

- 尝试过滤已加入的RDD中的行时: val joinedRDD = RDD1.join(RDD2).filter(x => x._2._2._5!='temp')

我想用名字代替2,5等。

由于

1 个答案:

答案 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查询。