【问题标题】:PySpark - how to merge key with case ignoredPySpark - 如何将键与忽略大小写合并
【发布时间】:2015-11-25 22:34:04
【问题描述】:

在字数统计示例中,例如我在映射后有(python,1)(Python,2)。如何通过以下操作将两者合并为一个(python,3)

def combine(a, b):
    if a[0].lower() == b[0].lower():
        return (a[0], a[1] + b[1])

然后我打电话

(sc.map(lambda word: (word, 1))
    .reduceByKey(lambda a, b: a + b)
    .reduce(lambda a, b :combine(a, b)))

【问题讨论】:

    标签: python mapreduce apache-spark pyspark


    【解决方案1】:

    reduce 在这里不太适合(它需要一个额外的map 到可以处理预期聚合的缓冲区),并且在地图内简单地转换为小写更有意义:

    from operator import add 
    
    rdd = sc.parallelize([
       "Python", "python", "Haskell", "Clojure", "Scala", "scala"])
    rdd.map(lambda word: (word.lower(), 1)).reduceByKey(add).collectAsMap()
    
    ## {'clojure': 1, 'haskell': 1, 'python': 2, 'scala': 2}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多