DataFrame --- join / groupBy-agg - 分区
Posted
技术标签:
【中文标题】DataFrame --- join / groupBy-agg - 分区【英文标题】:DataFrame --- join / groupBy-agg - partition 【发布时间】:2017-07-11 21:10:11 【问题描述】:我可能对加入/groupBy-agg 有一个幼稚的问题。在RDD的日子里,每当我想表演时 一种。 groupBy-agg,我曾经说 reduceByKey(PairRDDFunctions 的)带有可选的 Partition-Strategy(带有分区数或 Partitioner) 湾。 join (of PairRDDFunctions) 及其变体,我曾经有一种方法来提供分区数
在DataFrame中,如何在这个操作中指定分区数?事后我可以使用 repartition() 。但这将是工作中的另一个阶段。
在连接期间增加分区/任务数量的一种解决方法是在 spark-submit 期间将“spark.sql.shuffle.partitions”设置为某个所需的数字。我正在尝试查看是否有办法以编程方式为 groupBy-agg / join 的每个步骤提供此功能?
以编程方式执行此操作的原因是,根据数据帧的大小,我可以使用更多或更少的任务来避免 OutOfMemoryError。
【问题讨论】:
【参考方案1】:AFAIK 你不能在每个步骤中指定多个分区,但是:
Spark 将尝试重新使用现有分区(如果存在),因此如果您在执行 groupBy 之前重新分区 ,它应该使用您指定的任意数量的分区(假设您正在使用当然是同一个键)。连接也一样,如果两个数据帧都使用相同的键(必须是连接键)和相同的分区数进行分区,则不会重新洗牌。 否则你确实可以调整spark.sql.shuffle.partitions
【讨论】:
以上是关于DataFrame --- join / groupBy-agg - 分区的主要内容,如果未能解决你的问题,请参考以下文章
Pandas中DataFrame数据合并连接(concatmergejoin)之join
DataFrame --- join / groupBy-agg - 分区