问题标签 [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.
apache-spark - Coalesce 可以增加 Spark DataFrame 的分区吗
我试图理解 和 之间的coalesce()
区别repartition()
。
如果我正确理解了这个答案,coalesce()
只能减少数据帧的分区数,如果我们尝试增加分区数,则分区数保持不变。
但是当我尝试执行下面的代码时,我观察到了两件事
- 对于具有合并的分区数的 Dataframe 可以增加
- 对于 Rdd,如果 shuffle = false 则分区数不能随着合并而增加。
这是否意味着可以增加合并数据框的分区?
将合并应用于数据框
当我执行以下代码时:
我得到以下输出
将合并应用于 RDD
当我执行以下代码时:
我得到以下输出:
scala - Apache Spark 当每个键的所有记录的大小大于单个分区的大小时调用 repartition($"key") 会发生什么?
假设我有一个 10GB 的数据框,其中一个列的“c1”对于每条记录都具有相同的值。每个单个分区最大为 128 MB(默认值)。假设我调用repartition($"c1"),那么所有的记录会被洗牌到同一个分区吗?如果是这样,它不会超过每个分区的最大大小吗?在这种情况下,重新分区将如何工作?
dataframe - Pyspark:从 s3 位置读取 Avro 文件需要很长时间
我有一个表列表(大约 10 个表)。一些表包含几行(100 和 1000 行)和一些大表(数十万行)。这是一项 ETL 工作,阅读需要很长时间(每张桌子平均需要 3 分钟)。如何优化火花性能?
apache-spark - pyspark 中 bucketBy 的用处是什么?
我正在读取我保存到磁盘的两个数据集,这些数据集bucketBy
在具有相同分区数的相同键上具有选项。当我读回它们并加入它们时,它们不应该导致洗牌。
但是,我看到的情况并非如此。以下代码演示了所谓的行为:
我得到的输出是
这显然有 hashpartitioning goiong 。请帮我澄清bucketBy
apache-spark - 如果没有指定列名,pyspark 重新分区如何工作?
有两个数据框df
和df1
那么,让我们考虑3种情况:
df1
只有相同的行数df
df1
具有与df
和 相同的行数,与 具有相同的分区数df
。Thinkdf.repartition(k)
and,df1.repartition(k)
之前就被处决了df1
具有与 相同的行数df
、与 相同的分区数df
以及与 相同的行分布df
。认为df1
是由df1=df.select('col1','col2',..)
现在,
我这样做:
df.repartition(n)
那么,可以说它与以下内容df
一起分发:
- 分区 1 - {一些行 1}
- 分区 2 - {一些行 2}
- ...
- 分区 n - {一些行 n}
然后,我愿意df1.repartition(n)
。对于df1
上述所有三种配置。
- 可以说每个分区的
df1
行数与df
post的分区相同df.repartition(n)
吗?意思是,如果执行程序 1 获得了 3 个分区,df
其中行数为 r1,r2,r3,那么它也获得了 3 个分区df1
,行数为 r1,r2,r3 - 可以说每个分区的分布与分区的
df1
分布相同吗?意思是,来自两个数据帧的第 i 行进入了同一个分区df
df.repartition(n)
apache-spark - Apache Spark - 将 jdbc 连接对象传递给执行程序
我在 spark 驱动程序中创建一个 jdbc 对象,并在执行程序中使用它来访问数据库。所以我担心的是相同的连接对象还是执行程序会获得连接对象的副本,因此每个分区会有单独的连接?