Spark SQL:生成的分区数似乎很奇怪

时间:2017-07-13 15:02:16

标签: dataframe pyspark task

我有一个非常简单的Hive表,其结构如下。

CREATE EXTERNAL TABLE table1(
col1 STRING,
col2 STRING)
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY '\t' 
STORED AS TEXTFILE 
LOCATION 's3://path/';

此表所指向的目录只有一个大小为51 KB的文件。

从pyspark shell(包含所有默认值):

df = sparksession.sql("SELECT * from table1")
df.rdd.getNumPartitions()

返回的分区数很奇怪。有时它返回64,有时81.

我的期望是最大限度地看到1个或2个分区。我为什么看到那么多分区的想法?

感谢。

1 个答案:

答案 0 :(得分:0)

正如你所说,返回的分区数量有时会返回64,有时会返回81,因为即使你使用repartition命令,它也要在多少分区中存储数据,然后它也会向火花发出请求如果spark认为不可能将数据混洗到给定的重分区中,那么它将自己做出决定并将数据存储在随机数量的分区中。

希望此解释能够解决您的疑问。