这是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:空分隔符
我在这里缺少什么?非常感谢你。
答案 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']