即使是Hive表或HDFS文件,当Spark读取数据并创建数据帧时,我认为RDD/dataframe中的分区数量将等于HDFS中的partfile数量。但是,当我使用配置单元外部表进行测试时,我可以看到这个数量与数据帧中分区的部分文件数量.The数量119不同。该表是一个Hive分区表,其中包含150个部分文件,最小文件大小为30MB,最大大小为118MB。那么,是什么决定了分区的数量呢?
发布于 2020-04-02 20:58:20
您可以通过设置spark.sql.files.maxPartitionBytes来控制Spark填充到单个分区中的字节数。默认值为128MB,请参阅Spark Tuning。
发布于 2020-04-03 19:04:55
我认为这个链接确实回答了我的问题,分区的数量取决于拆分的数量,而拆分取决于.The的输入格式。https://intellipaat.com/community/7671/how-does-spark-partition-ing-work-on-files-in-hdfs
发布于 2020-04-02 21:13:03
每个块的块大小为128MB。斯帕克会读取数据。假设您的配置单元表大小是14.8 GB,那么它将把配置单元表数据划分为128MB的块,并将产生119个分区。
另一方面,您的配置单元表是分区的,因此分区列具有150个唯一值。
因此,配置单元中的零件文件数量和spark中的分区数量没有关联。
https://stackoverflow.com/questions/60991846
复制相似问题