我在spark-scala中有一个场景,我需要将RDD[List[String]]
转换为RDD[String]
。
我该怎么做?
@eric,我可以知道为什么问题不在话题吗?
答案 0 :(得分:7)
在rdd。
上使用flatMap(rdd.flatMap(x => x)
)操作
scala> rdd.flatMap(x => x)
res1: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[2] at flatMap at <console>:27
scala> val rdd = sc.parallelize(Seq(List("1","2","3"), List("4", "5", "6")))
rdd: org.apache.spark.rdd.RDD[List[String]] = ParallelCollectionRDD[3] at parallelize at <console>:24
scala> val result = rdd.flatMap(x => x)
result: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[6] at flatMap at <console>:26
scala> result.collect()
res7: Array[String] = Array(1, 2, 3, 4, 5, 6)
使用 ERROR 过滤消息,并使用评论中请求的BidError
案例类创建字符串,如下所示。
result.filter(_.contains("ERROR")).map(BidError("2017-06-09",_).toString)