gpt4 book ai didi

apache-spark - Spark 数据表 : where is partitionBy?

转载 作者:行者123 更新时间:2023-12-04 05:11:08 24 4
gpt4 key购买 nike

我们常见的 Spark 处理流程是这样的:

正在加载:

rdd = sqlContext.parquetFile("mydata/")
rdd = rdd.map(lambda row: (row.id,(some stuff)))
rdd = rdd.filter(....)
rdd = rdd.partitionBy(rdd.getNumPatitions())

id 处理(这就是为什么我们执行上面的 partitionBy!)

rdd.reduceByKey(....)
rdd.join(...)

但是,Spark 1.3改变了sqlContext.parquetFile返回DataFrame而不是RDD,而且它不再有partitionBygetNumPartitionsreduceByKey 方法。

我们现在用 partitionBy 做什么?

我们可以用类似的东西替换加载代码

rdd = sqlContext.parquetFile("mydata/").rdd
rdd = rdd.map(lambda row: (row.id,(some stuff)))
rdd = rdd.filter(....)
rdd = rdd.partitionBy(rdd.getNumPatitions())
df = rdd.map(lambda ...: Row(...)).toDF(???)

并使用 groupBy 而不是 reduceByKey

这是正确的方法吗?

附言。是的,我知道 partitionBy 不是 groupBy 等所必需的。但是,如果没有事先的 partitionByeach joingroupBy &c 可能必须进行跨节点操作。我正在寻找一种方法来保证所有需要按我的 key 分组的操作都将在本地运行。

最佳答案

看来,自 1.6 版本以来,repartition(self, numPartitions, *cols)做我需要的:

.. versionchanged:: 1.6

Added optional arguments to specify the partitioning columns. Also made numPartitions optional if partitioning columns are specified.

关于apache-spark - Spark 数据表 : where is partitionBy?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30084976/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com