pyspark 按键减少没有给出正确的值
pyspark reduce by key not giving proper value
我在文本文件中有几个以逗号分隔的键值对,例如 (1,23) (2,25) (1,45) 等。这里 1 是键,23 是值。现在在 spark 中,我正在通过键操作减少
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')
其中 u'1'' 是键,u'23 45' 是应该添加的值。
这是我能理解的,因为这里的键值在拆分后都是字符串,所以基本上两个值都被连接起来了。
但如果我想将它们作为整数获取,我正在做
sum = textFile.map(lambda entry : (int(entry.split(',')[0])), int(entry.split(',')[1] ))).reduceByKey(lambda val1,val2 : val1 + val2)
但是这里我遇到了错误。请帮助我如何摆脱这个字符串。
尝试使用:encode('utf8') 来摆脱 u'
输入:
[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)]
我在文本文件中有几个以逗号分隔的键值对,例如 (1,23) (2,25) (1,45) 等。这里 1 是键,23 是值。现在在 spark 中,我正在通过键操作减少
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')
其中 u'1'' 是键,u'23 45' 是应该添加的值。 这是我能理解的,因为这里的键值在拆分后都是字符串,所以基本上两个值都被连接起来了。
但如果我想将它们作为整数获取,我正在做
sum = textFile.map(lambda entry : (int(entry.split(',')[0])), int(entry.split(',')[1] ))).reduceByKey(lambda val1,val2 : val1 + val2)
但是这里我遇到了错误。请帮助我如何摆脱这个字符串。
尝试使用:encode('utf8') 来摆脱 u'
输入:
[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)]