如何将RDD [List [String]]转换为RDD [String]

时间:2017-06-10 21:35:11

标签: scala apache-spark

我在spark-scala中有一个场景,我需要将RDD[List[String]]转换为RDD[String]

我该怎么做?

@eric,我可以知道为什么问题不在话题吗?

1 个答案:

答案 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)