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

标签 scala apache-spark hadoop rdd

我刚刚开始学习 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/

相关文章:

hadoop - Presto查询HIVE表异常:无法列出目录

scala - Slick:带左连接的查询中的动态 sortBy

apache-spark - 迭代更改列类型 Spark 数据帧

apache-spark - 在 Spark Streaming 中,如何检测空批处理?

scala - 如何将 Spark 流 DF 写入 Kafka 主题

amazon-s3 - 我应该如何对 s3 中的数据进行分区以便与 hadoop hive 一起使用?

java - Hadoop:错误:java.io.IOException:映射中的键类型不匹配:预期的 org.apache.hadoop.io.Text,收到 org.apache.hadoop.io.LongWritable

scala - sbt 无法执行 JUnit 测试

scala - Cats Free 基于 Monad 的代数组合

java - 在 Java Controller (PlayFramework) 中执行 Scala Action