Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala Spark字数示例:为什么错误:value split不是REPL的Char成员?_Scala_Apache Spark - Fatal编程技术网

Scala Spark字数示例:为什么错误:value split不是REPL的Char成员?

Scala Spark字数示例:为什么错误:value split不是REPL的Char成员?,scala,apache-spark,Scala,Apache Spark,在Spark示例()中,代码如下所示: val file = spark.textFile("hdfs://...") val counts = file.flatMap(line => line.split(" ")) .map(word => (word, 1)) .reduceByKey(_ + _) 并且在编译时工作。 但是,如果我在Spark REPL上尝试这个精确的代码: scala&

在Spark示例()中,代码如下所示:

    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(" "))
                                   ^
scala>val lines=“abc def”
行:String=abc def
scala>val words=lines.flatMap(u.split(“”)
:12:错误:**值拆分不是Char的成员**
val words=lines.flatMap(u.split(“”)
^
什么给

谢谢
Matt

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

如果你稍微把它打破一点

val words = lines.flatMap(x => x.split(" "))
                          ^ this is a Char
你只需在字符串本身上拆分即可

val words = lines.split(" ")

只是一个字符串。因此,
flatmap
是针对一系列字符运行的。您需要使用RDD

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

伟大的还有一个附带问题:当这样做时,rddYouCanUse变成了一个RDD[String]。rddYouCanUse.flatMap(.split(“”)是如何计算的?“”指的是什么?列表中的RDD“实例”?