pyspark减少密钥没有给出适当的价值

时间:2015-06-29 06:19:13

标签: apache-spark pyspark

我在文本文件中有几个键值对,以逗号分隔的方式,如(1,23)(2,25)(1,45)等。这里1是键,23是值。现在火花我正在通过键操作减少

entries = sc.textFile("scala/test.txt")
sum = textFile.map(lambda entry : (entry.split(',')[0]), entry.split(',')[1] )).reduceByKey(lambda val1,val2 : val1 + " " +val2)

我得到的输出

(u'1', u'23  45')

其中你' 1''是关键和你的关键。是应该添加的值。 我可以理解,因为这里的键值在拆分后都是字符串,所以基本上两个值都是连接的。

但如果我想将它们作为整数我正在做

sum = textFile.map(lambda entry : (int(entry.split(',')[0])), int(entry.split(',')[1] ))).reduceByKey(lambda val1,val2 : val1 + val2)

但在这里我收到了错误。请帮助我如何摆脱这个你'字符串。

1 个答案:

答案 0 :(得分:1)

尝试使用:encode('utf8')转换为你'

的getrid

输入:

[ramisetty@dragon1 vijay]$ cat test.txt
1,23
2,25
1,45

$ SPARK_HOME / bin中/ pyspark

>>>entries = sc.textFile("/home/ramisetty/vijay/test.txt")
>>>sum = entries.map(lambda entry : (entry.split(',')[0].encode('utf8'), entry.split(',')[1].encode('utf8'))).reduceByKey(lambda val1,val2 : int(val1)+int(val2))
>>> sum.collect()

<强>结果:

[('2','25'),('1',68)]