如何提高spark rdd的可读性?
问题描述:
我是新来的火花,我发现自己经常纠结于将元组转换成另一个元组,这可能非常复杂,例如(r._1 - >(r._2._1,r._2._2), r._3),并对此感到困惑。无论如何要改善这一点?如何提高spark rdd的可读性?
答
我会推荐使用DataFrame
s您可以通过名称访问列。这使您可以生成更好的可读代码。此外,您可以将这些帧存储为实木复合地板文件,这些文件不仅非常有效,而且还包含架构信息。这些操作非常有效地实施,并且通常不需要切换回RDD
。
答
-
不要使用元组,定义有意义的案例类。取而代之的
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) }