【问题标题】:How to improve spark rdd's readability?如何提高 spark rdd 的可读性?
【发布时间】:2017-04-13 13:15:21
【问题描述】:

我是 spark 新手,我发现自己经常纠结于将一个元组转换为另一个元组,这可能非常复杂,例如 (r._1 -> (r._2._1, r._2._2) , r._3),并对此感到困惑。有什么可以改进的吗?

【问题讨论】:

    标签: apache-spark rdd bigdata


    【解决方案1】:
    • 不要使用元组,定义有意义的案例类。而不是

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

    【讨论】:

      【解决方案2】:

      我建议使用DataFrames,您可以在其中按名称访问列。这使您可以生成更好的可读代码。此外,您可以将这些帧存储为 parquet 文件,这些文件不仅存储效率很高,而且还包含模式信息。这些操作的执行效率很高,通常不需要切换回RDDs。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-09-09
        • 2013-08-08
        • 2010-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-22
        相关资源
        最近更新 更多