Spark字数统计示例:为什么错误:值拆分不是REPL中Char的成员?

时间:2015-03-27 22:24:32

标签: scala apache-spark

从Spark示例(https://spark.apache.org/examples.html),代码如下:

    val file = spark.textFile("hdfs://...")
     val counts = file.flatMap(line => line.split(" "))
                 .map(word => (word, 1))
                 .reduceByKey(_ + _)

编译时可以正常工作。 但是,如果我在Spark REPL上尝试这个确切的代码:

scala> val lines = "abc def"
lines: String = abc def

scala> val words = lines.flatMap(_.split(" "))
<console>:12: error: **value split is not a member of Char**
       val words = lines.flatMap(_.split(" "))
                                   ^

是什么?

感谢 马特

2 个答案:

答案 0 :(得分:2)

file可能是Iterator[String]或类似的东西。在您的代码中,lines只是String。没有迭代器。这意味着当您平面映射String时,您将String视为集合,因此每个元素都是Char。并且Char没有split作为方法(没有意义)。

如果你突破了一点..

val words = lines.flatMap(x => x.split(" "))
                          ^ this is a Char

你可以拆分字符串本身。

val words = lines.split(" ")

答案 1 :(得分:1)

lines只是一个字符串。所以flatmap正在对一系列字符进行运行。您需要使用RDD

val rddYouCanUse = sc.parallelize(List("abc def"))