Dataframe sparksql:生成的分区数似乎很奇怪

Dataframe sparksql:生成的分区数似乎很奇怪,dataframe,pyspark,task,Dataframe,Pyspark,Task,我有一个非常简单的蜂箱表,结构如下 CREATE EXTERNAL TABLE table1( col1 STRING, col2 STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE LOCATION 's3://path/'; 此表所指向的目录只有一个大小为51 KB的文件 从pyspark外壳(具有所有默认值): 返回的分区数很奇怪。有时返回64,有时返回81 我的期望是看到一两个分区。有

我有一个非常简单的蜂箱表,结构如下

CREATE EXTERNAL TABLE table1(
col1 STRING,
col2 STRING)
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY '\t' 
STORED AS TEXTFILE 
LOCATION 's3://path/';
此表所指向的目录只有一个大小为51 KB的文件

从pyspark外壳(具有所有默认值):

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

我的期望是看到一两个分区。有没有想过为什么我会看到这么多分区


谢谢。

正如您所说,返回的分区数有时返回64个,有时返回81个,因为它取决于spark要在多少个分区中存储数据,即使您使用重新分区命令,如果spark认为不可能,那么它也会请求spark将数据重新排列到给定的重新分区中它将自己做出决定,并将数据存储在随机数目的分区中


希望这个解释能解决您的疑问。

其中大部分可能是空的。只需通过指定分区数来重新分区文件。实际上,表中大约有4000行,我注意到每个分区中大约有50行。谢谢,但仍然没有。为什么一个简单的51KB文件会产生64/81分区?这仍然是开放的。
df = sparksession.sql("SELECT * from table1")
df.rdd.getNumPartitions()