flatmap从文件中读取的结果与作为字符串传递的同一行不同

2ekbmq32  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(291)

我刚刚开始学习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)
0sgqnhkj

0sgqnhkj1#

这是使用sc,所以是平行的Spark。

val lines = sc.textFile("C:/test.txt")
val result = lines.flatMap(x => x.split(" "))
result.foreach(println)

这不是Spark。只是斯卡拉,只是一根弦。字符串的下一级是char。

val name = "My name is xyz"
val res = name.flatMap(x => x.split(" "))
println(res)

在scala级别,第一种方法的等效方法是至少生成一个字符串数组,该数组近似于sc.textfile读入的一行,然后它就工作了,或者就像他们说的bob's your uncle:

val name = Array("My name is xyz")
val res = name.flatMap(x => x.split(" "))
println(res)

返回(注意','s):

[Ljava.lang.String;@16947521
name: Array[String] = Array(My name is xyz)
res: Array[String] = Array(My, name, is, xyz)

相关问题