pyspark字数统计错误:ValueError:空分隔符

时间:2018-02-15 04:06:30

标签: python split pyspark

这是hdfs上的s84.txt,我想对它进行wordcount:

  

[paslechoix @ gw03~] $ hdfs dfs -cat s84.txt   Lorem Ipsum简直就是假的   印刷和排版行业的文本。 Lorem Ipsum一直都是   自16世纪以来,该行业的标准虚拟文本,

     

当一个未知的打印机拿出一个类型的厨房并乱扰它   一本标本书。它不仅存在了五个世纪,而且存活了下来   也是电子排版的一次飞跃,

     

基本保持不变。它在20世纪60年代随着推广而普及   释放包含Lorem Ipsum段落的Letraset表格,以及   最近使用像Aldus这样的桌面出版软件

     

PageMaker包括Lorem Ipsum的版本。

s84RDD = sc.textFile("p84.txt") 
nonempty_lines = s84RDD.filter(lambda x: len(x) > 0)
words = nonempty_lines.flatMap(lambda x: x.split("")) 
wc = words.map(lambda x: (x,1)).reduceByKey(lambda x, y: x+y).map(lambda x: (x[1], x[0])).sortByKey(False)

错误:

ValueError:空分隔符

我在这里缺少什么?非常感谢你。

1 个答案:

答案 0 :(得分:4)

来自官方docs

  

使用sep作为分隔符字符串,返回字符串中的单词列表。

split()需要一个分隔符。您正在使用split(""),其参数为"",这是一个空字符串。

>>> '1,2,3'.split(',')
['1', '2', '3']

>>> '1 2 3'.split()
['1', '2', '3']

>>> "Lorem ipsum sit dolor amet".split("")
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    x.split("")
ValueError: empty separator

>>> "Lorem ipsum sit dolor amet".split(" ")
['Lorem', 'ipsum', 'sit', 'dolor', 'amet']