Scala 从连接的RDD中删除层并为元素命名
我正在处理RDD之间的一系列连接,在进行了几次连接之后,从索引中访问每个元素会变得非常混乱。下面是我加入的RDD。这只是一个简单的例子。实际上它可能会变得更难看Scala 从连接的RDD中删除层并为元素命名,scala,apache-spark,Scala,Apache Spark,我正在处理RDD之间的一系列连接,在进行了几次连接之后,从索引中访问每个元素会变得非常混乱。下面是我加入的RDD。这只是一个简单的例子。实际上它可能会变得更难看 res41: org.apache.spark.rdd.RDD[(String, ((String, Double), Double))] 我可以: 给RDD中的每个元素命名,然后访问它们 移除图层并将所有元素展平为逗号分隔的值?我知道flatMap可能会有帮助,但我不知道如何使用它 任何帮助都将不胜感激您没有提到您正在使用哪种编程语
res41: org.apache.spark.rdd.RDD[(String, ((String, Double), Double))]
我可以:
任何帮助都将不胜感激您没有提到您正在使用哪种编程语言,但在Scala中,您可以通过声明一个案例类并将RDD映射到该类来展开并命名字段:
val conf = new SparkConf().setMaster("local").setAppName("example")
val sc = new SparkContext(conf)
val data = List(
("abc", (("x", 12.3), 23.4)),
("def", (("y", 22.3), 24.4)),
("jkl", (("z", 32.3), 25.4))
)
val rdd = sc.parallelize(data)
case class MyDataStructure(field1: String, field2: String, field3: Double, field4: Double)
val caseRDD = data.map {
case (f1, ((f2, f3), f4)) => MyDataStructure(f1, f2 , f3, f4)
}
caseRDD //has type RDD[MyDataStructure]
谢谢你!!这正是我所需要的,我实际上在Scala工作。这让我快发疯了:(可能是