【问题标题】:Pyspark - reducer task iterates over valuesPyspark - 减速器任务迭代值
【发布时间】:2015-07-28 21:09:00
【问题描述】:

我是第一次使用 pyspark。

我希望我的 reducer 任务迭代从映射器返回的值,就像在 java 中一样。

我看到只有累加器的选项而不是迭代 - 就像在添加函数 add(data1,data2) => data1 是累加器。

我想在我的输入中获得一个包含属于该键的值的列表。

这就是我想做的。有人知道是否有这样做的选择吗?

【问题讨论】:

    标签: python mapreduce apache-spark pyspark reducers


    【解决方案1】:

    请使用 reduceByKey 函数。在 python 中,它应该是这样的

    from operator import add
    rdd = sc.textFile(....)
    res = rdd.map(...).reduceByKey(add)
    

    注意:Spark 和 MR 有根本的区别,所以建议不要强行匹配。 Spark 也很好地支持配对函数,如果你想要更高级的东西,请寻找 aggregateByKey。

    顺便说一句,spark docs 中深入讨论了字数问题(尤其是 flatmap 的用法),您可能想看看

    【讨论】:

    • 非常感谢,但这不是我的意思。我想用相同的键迭代所有值。就我而言,它是机器学习中的实例。我想收集所有实例并在减速器中训练模型。
    • reduceByKey 是 aggregateByKey 的简写,它具有使用序列和组合操作的更通用形式。如果你使用它,你应该能够元组/列出一个键的所有值。但是,“在 reducer 中做某事”仍然困扰着我,我很想知道为什么它可以在 RDD 中完成,比如已经是 spark 一部分的 mlib 函数。
    猜你喜欢
    • 2016-11-04
    • 1970-01-01
    • 2021-11-25
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 2012-08-16
    • 2023-03-31
    • 1970-01-01
    相关资源
    最近更新 更多