Scala Spark字数示例:为什么错误:value split不是REPL的Char成员?
在Spark示例()中,代码如下所示: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&
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“实例”?