问题标签 [apache-spark-sql-repartition]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1024 浏览

apache-spark - Coalesce 可以增加 Spark DataFrame 的分区吗

我试图理解 和 之间的coalesce()区别repartition()

如果我正确理解了这个答案coalesce()只能减少数据帧的分区数,如果我们尝试增加分区数,则分区数保持不变。

但是当我尝试执行下面的代码时,我观察到了两件事

  1. 对于具有合并的分区数的 Dataframe 可以增加
  2. 对于 Rdd,如果 shuffle = false 则分区数不能随着合并而增加。

这是否意味着可以增加合并数据框的分区?

将合并应用于数据框

当我执行以下代码时:

我得到以下输出

将合并应用于 RDD

当我执行以下代码时:

我得到以下输出:

0 投票
2 回答
65 浏览

scala - Apache Spark 当每个键的所有记录的大小大于单个分区的大小时调用 repartition($"key") 会发生什么?

假设我有一个 10GB 的数据框,其中一个列的“c1”对于每条记录都具有相同的值。每个单个分区最大为 128 MB(默认值)。假设我调用repartition($"c1"),那么所有的记录会被洗牌到同一个分区吗?如果是这样,它不会超过每个分区的最大大小吗?在这种情况下,重新分区将如何工作?

0 投票
0 回答
18 浏览

dataframe - Pyspark:从 s3 位置读取 Avro 文件需要很长时间

我有一个表列表(大约 10 个表)。一些表包含几行(100 和 1000 行)和一些大表(数十万行)。这是一项 ETL 工作,阅读需要很长时间(每张桌子平均需要 3 分钟)。如何优化火花性能?

0 投票
0 回答
13 浏览

apache-spark - pyspark 中 bucketBy 的用处是什么?

我正在读取我保存到磁盘的两个数据集,这些数据集bucketBy在具有相同分区数的相同键上具有选项。当我读回它们并加入它们时,它们不应该导致洗牌。

但是,我看到的情况并非如此。以下代码演示了所谓的行为:

我得到的输出是

这显然有 hashpartitioning goiong 。请帮我澄清bucketBy

0 投票
0 回答
23 浏览

apache-spark - 如果没有指定列名,pyspark 重新分区如何工作?

有两个数据框dfdf1

那么,让我们考虑3种情况:

  1. df1只有相同的行数df
  2. df1具有与df和 相同的行数,与 具有相同的分区数df。Think df.repartition(k)and,df1.repartition(k)之前就被处决了
  3. df1具有与 相同的行数df、与 相同的分区数df以及与 相同的行分布df。认为df1是由df1=df.select('col1','col2',..)

现在,

我这样做: df.repartition(n)那么,可以说它与以下内容df一起分发:

  1. 分区 1 - {一些行 1}
  2. 分区 2 - {一些行 2}
  3. ...
  4. 分区 n - {一些行 n}

然后,我愿意df1.repartition(n)。对于df1上述所有三种配置。

  1. 可以说每个分区的df1行数与dfpost的分区相同df.repartition(n)吗?意思是,如果执行程序 1 获得了 3 个分区,df其中行数为 r1,r2,r3,那么它也获得了 3 个分区df1,行数为 r1,r2,r3
  2. 可以说每个分区的分布与分区的df1分布相同吗?意思是,来自两个数据帧的第 i 行进入了同一个分区dfdf.repartition(n)
0 投票
0 回答
18 浏览

apache-spark - 为什么最后一个执行程序计算时间在 spark sql 中需要很长时间

在spark ui中使用spark sql,第一个任务通常很快完成,但最后一个任务需要很长时间(一个多小时)监控它,它似乎只在一个节点上工作我该如何解决?repartition 选项被慷慨地给出了,但它没有效果 sql 查询有很多 JOIN .. 有问题吗?(火花版本 2.1)

在此处输入图像描述

在此处输入图像描述

0 投票
0 回答
7 浏览

apache-spark - Apache Spark - 将 jdbc 连接对象传递给执行程序

我在 spark 驱动程序中创建一个 jdbc 对象,并在执行程序中使用它来访问数据库。所以我担心的是相同的连接对象还是执行程序会获得连接对象的副本,因此每个分区会有单独的连接?