当前位置: 首页 > 知识库问答 >
问题:

数据框架-连接/分组依据-聚集-分区

施赞
2023-03-14

我可能对加入/组By-agg有一个天真的问题。在RDD的日子里,每当我想执行a. groupBy-agg时,我曾经说reduceByKey(PairRDDFunctions)带有可选的分区策略(带有分区数或分区程序)b.join(PairRDDFunctions)及其变体,我曾经有一种方法可以提供分区数量

在DataFrame中,如何指定此操作期间的分区数?我可以在事后使用repartition()。但这将是工作的另一个阶段。

在连接期间增加分区/任务数量的一种方法是在火花提交期间设置“spark.sql.shuffle.partitions”它一些所需的数量。我想看看是否有一种方法可以以编程方式为group的每个步骤提供此功能

以编程方式执行此操作的原因是,根据数据框的大小,我可以使用更多或更少数量的任务来避免OutOfMemoryError。

共有1个答案

董高逸
2023-03-14

AFAIK 您不能在每个步骤中指定多个分区,但是:

  • Spark 将尝试重用现有分区(如果存在),因此,如果您在执行 groupBy 之前重新分区,它应该使用您指定的任何数量的分区(当然,假设您使用相同的键)。如果两个数据帧使用相同的键(必须是联接键)进行分区,则联接也是如此
 类似资料:
  • 问题内容: 考虑Oracle表。我想用顶薪与获得职工和。还假定没有“ empno”列,并且主键涉及许多列。您可以使用以下方法执行此操作: 这可行,但我必须重复测试deptno = 20和job =’CLERK’,这是我想避免的。有没有更优雅的方式编写此代码,也许使用?顺便说一句,如果这很重要,我正在使用Oracle。 问题答案: 以下内容经过了精心设计,但对于“ top x”查询而言,这是一个很好

  • 我正在尝试使用Elasticsearch(2.4)聚合对使用该查询的多个索引按“productId”分组 1) 我想按分数排序,所以我尝试使用 哪个返回 2) 此外,我正在尝试使用分页,“size”键实际起作用,但“from”键不起作用 **更新-聚合结果示例** 希望有人能帮忙

  • 问题内容: 我有两张桌子。表A列出了员工姓名。表B是一个复杂的表,其中包含有关员工打来的电话的信息。 我的目标是制作一个包含“名称”和“ callCount”列的表。我的目标是“左加入”和“分组依据”,但是我一直想念没有打过电话的员工。我怎样才能只保留名称并在其中放置零? 也许我很亲密,有人可以指出我的错字吗?在此先感谢您的帮助,以下是SQL: 问题答案: 这是一个JOIN而非NULL问题:您的过

  • 问题内容: 我有如下的SQL: 并得到结果: 我想总结每个部门的学生人数,如下所示: 我该如何编写sql? 问题答案: 尽管您似乎并未显示所有表格,但我只能假设还有每位学生的实际入学表格 如果您想要与每个学生相关联的每个部门的总数(这没有意义),则可能必须这样做… 我对“姓名”列的解释是学生的姓名,而不是班级实际讲师的姓名,因此,我进行子选择/加入。否则,就像其他人一样,只需要使用COUNT(*)

  • 我正在使用DatabaseClient执行sql查询,我不知道如何通过以下方式进行分组:

  • 我需要根据一些共享的键列将许多数据帧连接在一起。对于键值RDD,可以指定一个分区程序,以便具有相同键的数据点被洗牌到相同的执行器,因此连接更有效(如果在之前有与洗牌相关的操作)。可以在火花数据帧或数据集上做同样的事情吗?