我有一个非常简单的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个分区。我为什么看到那么多分区的想法?
感谢。
答案 0 :(得分:0)
正如你所说,返回的分区数量有时会返回64,有时会返回81,因为即使你使用repartition命令,它也要在多少分区中存储数据,然后它也会向火花发出请求如果spark认为不可能将数据混洗到给定的重分区中,那么它将自己做出决定并将数据存储在随机数量的分区中。
希望此解释能够解决您的疑问。