我刚刚开始学习 spark 和 scala。我有一个文件 test.txt,其中有一行“我的名字是 xyz”。
当我创建 RDD 并应用 flatmap 方法时,当我打印它时,我得到了 -
我的
名字
是
xyz
但是当同一行作为字符串传递给 flatmap 时,它会抛出一个编译器错误“split 不是 char 的成员”
val lines = sc.textFile("C:/test.txt")
val result = lines.flatMap(x => x.split(" "))
result.foreach(println)
val name = "My name is xyz"
val res = name.flatMap(x => x.split(" "))
//println(res)
最佳答案
这是使用 sc,因此在 Spark 中并行化。
val lines = sc.textFile("C:/test.txt")
val result = lines.flatMap(x => x.split(" "))
result.foreach(println)
这不是 Spark'ed。只是 Scala,只是一个字符串。 String 的下一层是 Char。
val name = "My name is xyz"
val res = name.flatMap(x => x.split(" "))
println(res)
第一个在 Scala 级别的等价物是至少制作一个字符串数组,它近似于 sc.textFile 正在读取的一行,然后它就可以工作,或者正如他们所说的 Bob 是你的叔叔:
val name = Array("My name is xyz")
val res = name.flatMap(x => x.split(" "))
println(res)
返回(注意','):
[Ljava.lang.String;@16947521
name: Array[String] = Array(My name is xyz)
res: Array[String] = Array(My, name, is, xyz)
关于scala - 从文件读取的 flatMap 结果与作为字符串传递的同一行不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57521416/