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 计算输入文本文件中出现的字符数_Scala_Apache Spark_Rdd_Flatmap_Bigdata - Fatal编程技术网

Scala 计算输入文本文件中出现的字符数

Scala 计算输入文本文件中出现的字符数,scala,apache-spark,rdd,flatmap,bigdata,Scala,Apache Spark,Rdd,Flatmap,Bigdata,如何将文本文件的平面图转换为字符的平面图?我必须计算文本文件中每个字符的出现次数。遵循以下代码后要采取什么方法 val words = readme.flatMap(line => line.split(" ")).collect() 为了将每个字符串转换为其表示字符,您需要额外的平面图: val characters = lines.flatMap(_.split(" ")).flatMap(_.toCharArray) scala> val lines = Array("he

如何将文本文件的平面图转换为字符的平面图?我必须计算文本文件中每个字符的出现次数。遵循以下代码后要采取什么方法

val words = readme.flatMap(line => line.split(" ")).collect()

为了将每个
字符串
转换为其表示字符,您需要额外的
平面图

val characters = lines.flatMap(_.split(" ")).flatMap(_.toCharArray)

scala> val lines = Array("hello world", "yay more lines")
lines: Array[String] = Array(hello world, yay more lines)

scala> lines.flatMap(_.split(" ")).flatMap(_.toCharArray)
res3: Array[Char] = Array(h, e, l, l, o, w, o, r, l, d, y, a, y, m, o, r, e, l, i, n, e, s)

虽然这是一个Scala控制台,但它在
RDD上也能起到同样的作用

如果您只对
char
感兴趣,那么我想您可能也需要计算
空格“

val chars = readme.flatMap(line => line.toCharArray)

// but if you dont want to count spaces too,
// val chars = readme.flatMap(line => line.toCharArray.filter(_ != ' '))

val charsCount = chars
  .map(c => (c, 1))
  .reduceByKey((i1: Int, i2: Int) => i1 + i2)

我敢打赌,在Spark之外连续运行这个程序,对于几乎任何大小的输入都会运行得更快。这是作业吗?如果你只是在数字符,为什么要先在空格上拆分?
val txt = a.getClass.getResourceAsStream("/a.txt")
val txtFile = File.createTempFile("a", "txt")
txtFile.deleteOnExit()
ByteStreams.copy(txt, Files.newOutputStreamSupplier(txtFile))
val tokenized = sc.textFile(txtFile.toString).flatMap(_.split(' ')) 
val char = tokenized.flatMap(_.toCharArray)