【问题标题】:pyspark reduce by key not giving proper valuepyspark 通过键减少没有给出正确的值
【发布时间】:2015-06-29 17:23:16
【问题描述】:

我在文本文件中有几个以逗号分隔的键值对,例如 (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)

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

【问题讨论】:

    标签: apache-spark pyspark


    【解决方案1】:

    尝试使用:encode('utf8') to getrid of 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)]

    【讨论】:

    • 非常感谢。真的很有帮助。
    猜你喜欢
    • 1970-01-01
    • 2015-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-12
    • 1970-01-01
    相关资源
    最近更新 更多