如何提高spark rdd的可读性?

时间:2016-11-29 13:52:53

标签: apache-spark rdd bigdata

我是新手,我发现自己经常纠结于将一个元组转换为另一个元组,这可能非常复杂,如(r._1 - >(r._2._1,r._2 ._2) ),r._3),并与之混淆。反正有没有改善这个?

2 个答案:

答案 0 :(得分:4)

  • 不要使用元组,定义有意义的案例类。而不是

    val rdd =  sc.parallelize(Seq((1, "foo", (2, 2.0)), (2, "bar", (-1, 1.0))))
    

    使用

    case class Meta(someValue: Int, anotherValue: Double)
    case class Record(x: Int, y: String, meta: Meta)
    
    val records = sc.parallelize(Seq(
      Record(1, "foo", Meta(2, 2.0)), 
      Record(2, "bar", Meta(-1, 1.0))))
    
    records.map(record => (record.meta.anotherValue, record.x))
    
  • 如果您使用元组首选模式匹配与有用的绑定而不是索引。

    rdd.map {
       case (x, _, (_, anotherValue)) =>  (anotherValue, x)
    }
    

答案 1 :(得分:1)

我建议您使用DataFrame s,您可以按名称访问列。这使您可以生成更好的可读代码。此外,您可以将这些框架存储为镶木地板文件,这些文件不仅非常具有存储效率,还包含架构信息。这些操作非常有效地实现,并且通常不需要切换回RDD