Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.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
Apache spark Spark中字的过滤和计数过程中的错误_Apache Spark - Fatal编程技术网

Apache spark Spark中字的过滤和计数过程中的错误

Apache spark Spark中字的过滤和计数过程中的错误,apache-spark,Apache Spark,我想定义5个单词,并根据这17个单词过滤我的数据集,并计算出现的次数。 假设 words = ['dog', 'cat','tiger','lion','cheetah'] 我有一个文本文件,其中包含超过2000行的句子。我想搜索我的文本文件,并返回出现的次数 我在网上搜索了一些代码,比如 val filePath = sc.text_file("/user/cloudera/input/Hin*/datafile.txt") val crimecounts = filePath.

我想定义5个单词,并根据这17个单词过滤我的数据集,并计算出现的次数。 假设

words = ['dog', 'cat','tiger','lion','cheetah']
我有一个文本文件,其中包含超过2000行的句子。我想搜索我的文本文件,并返回出现的次数

我在网上搜索了一些代码,比如

val filePath = sc.text_file("/user/cloudera/input/Hin*/datafile.txt")
val crimecounts =
  filePath.
    flatMap(line=>line.split(" ")).
    filter(w => (w =="dog") || (w == "lion")).
    map(word=>(word, 1)).
    reduceByKey(_ + _)
此代码返回错误的“lion”计数。令人惊讶的是,只返回了“狮子”的计数。我已经分别使用Python代码检查了计数值的正确性。如何更正代码,以便返回所有5个单词的正确计数。 数据子集如下所示:

那是一个炎热的夏日。一头狮子和一头野猪来到一个小水域喝水。狮子和野猪开始争论谁应该先喝酒。过了一会儿,当他们注意到上面的秃鹫时,他们累了,停下来喘口气。很快,他们意识到秃鹫正在等待它们中的一个或两个倒下,以饱餐一顿。狮子和野猪于是决定,最好是和好,成为朋友,而不是打架,成为秃鹫的食物。狮子和野猪一起喝水,然后继续前进


我是一个新手。在这方面有人能帮我吗

您的代码中有太多错误。数组创建部分似乎在pyspark中,但其余代码似乎在scala中。而且sparkContext实例没有文本文件api

pyspark的解决方案:

words = ['dog', 'cat','tiger','lion','cheetah']

filePath = sc.textFile("/user/cloudera/input/Hin*/datafile.txt")
from operator import add
crimecounts = filePath.flatMap(lambda line: line.split(" ")).filter(lambda w: w.lower() in words).map(lambda word: (word, 1)).reduceByKey(add)
scala的解决方案:

val words = Array("dog","cat","tiger","lion","cheetah")

val filePath = sc.textFile("/user/cloudera/input/Hin*/datafile.txt")
val crimecounts = filePath.flatMap(line => line.split(" ")).filter(w => words.contains(w.toLowerCase)).map(word => (word, 1)).reduceByKey(_ + _)

你的代码中有很多错误。数组创建部分似乎在pyspark中,但其余代码似乎在scala中。而且sparkContext实例没有文本文件api

pyspark的解决方案:

words = ['dog', 'cat','tiger','lion','cheetah']

filePath = sc.textFile("/user/cloudera/input/Hin*/datafile.txt")
from operator import add
crimecounts = filePath.flatMap(lambda line: line.split(" ")).filter(lambda w: w.lower() in words).map(lambda word: (word, 1)).reduceByKey(add)
scala的解决方案:

val words = Array("dog","cat","tiger","lion","cheetah")

val filePath = sc.textFile("/user/cloudera/input/Hin*/datafile.txt")
val crimecounts = filePath.flatMap(line => line.split(" ")).filter(w => words.contains(w.toLowerCase)).map(word => (word, 1)).reduceByKey(_ + _)

你能用一小部分数据重现这个问题吗?使用此代码得到的计数是多少?另外,您使用的是Python还是Scala?我使用的是spark shell。我擅长Python,因此我通过
file.read().lower(),并使用count()函数构建了一个测试正确性的代码。我通过编辑添加了数据子集。我得到的Lion count为2,而数据的小子集本身的Lion count为4。您将其标记为pyspark,但同时使用了scala和pyspark代码。请验证我看不到任何Python代码-为什么它被标记为
pyspark
?@desertnaut我是Spark的新手,所以我不知道哪个标记合适。你能用一小部分数据重现这个问题吗?使用此代码得到的计数是多少?另外,您使用的是Python还是Scala?我使用的是spark shell。我擅长Python,因此我通过
file.read().lower(),并使用count()函数构建了一个测试正确性的代码。我通过编辑添加了数据子集。我得到的Lion count为2,而数据的小子集本身的Lion count为4。您将其标记为pyspark,但同时使用了scala和pyspark代码。请验证我看不到任何Python代码-为什么这个标签被标记为
pyspark
?@desertnaut我是Spark的新手,所以我不知道哪个标签合适谢谢你的回答。我还有两个疑问。请不要犹豫回答。假设,如果还有59个这样的文件,我想对所有文件中的每个单词进行合并计数,我该怎么做呢?另一个问题是,当我从文件中读取数据时,如何使其不区分大小写并运行该文件?从您的命令中,感谢您,不会出现任何错误。但是正在生成一个空的RDD。我已经交叉检查了HDFS中是否存在数据。我正在使用Cloudera发行版的Quickstart VM,因此我想它已经设置好了。当我尝试在PySpark中打印文件时,所有单词都以“\xa0”作为前缀,我想这与编码有关。这会导致任何问题吗?回答你的问题:1)你只需要给出目录路径,里面的所有文件都会被读取。2) 您可以将所有单词改为小写或使用igoreCase()。3) hadoop配置和将其链接到spark时出现了问题。4) 文本文件中可能有一些符号。谢谢您的回答。我还有两个疑问。请不要犹豫回答。假设,如果还有59个这样的文件,我想对所有文件中的每个单词进行合并计数,我该怎么做呢?另一个问题是,当我从文件中读取数据时,如何使其不区分大小写并运行该文件?从您的命令中,感谢您,不会出现任何错误。但是正在生成一个空的RDD。我已经交叉检查了HDFS中是否存在数据。我正在使用Cloudera发行版的Quickstart VM,因此我想它已经设置好了。当我尝试在PySpark中打印文件时,所有单词都以“\xa0”作为前缀,我想这与编码有关。这会导致任何问题吗?回答你的问题:1)你只需要给出目录路径,里面的所有文件都会被读取。2) 您可以将所有单词改为小写或使用igoreCase()。3) hadoop配置和将其链接到spark时出现了问题。4) 文本文件中可能有一些符号。