【发布时间】:2017-10-10 22:59:19
【问题描述】:
我正在使用 Apache Spark 和 Scala,并且有一个文本中的行的文本 RDD[String]。我想将其拆分为单词(就像在每个空格处拆分一样)并取出另一个由单独单词组成的 RDD[String]。
我尝试在每个空格处拆分文本,但不知道如何将 Array[String] 转换为 RDD[String]。
val lines = sc.textFile(filename)
val words = lines.map(line => line.split('_'))
我也试过
val words = lines.flatMap(line => line.split('_')).collect()
但我仍然得到一个 Array[String]
作为一种不同的方法,我尝试获取空间的索引,然后在这些索引处拆分行,但每次必须使用具有不同数量和空间位置的单独行并获得RDD[Array[Int]] 中的 Array[Int]。
val spaces = lines.map(line => line.zipWithIndex.filter(_._1 == ' ').map(_._2))
谁能帮忙?
【问题讨论】:
-
你得到了一个数组,因为你调用了
collect(),它将RDD中的数据收集到一个本地数组中。只需使用lines.flatMap(line => line.split('_'))。 -
鉴于 Spark 的 DataFrames/Datasets 的新世纪,您为什么要使用 RDD?我相信您会更喜欢使用 Spark。
标签: arrays string scala apache-spark rdd