1.小文件产生原因:
spark.sql.shuffle.partitions=200 ,spark sql默认shuffle分区是200个,如果数据量比较小时,写hdfs时会产生200个小文件。
2. 可尝试通过以下操作来解决小文件过多问题,在sql执行过程中, 设置分区个数(repartition可以在rdd生效,配置是全局生效的)如下
-
--conf spark.sql.shuffle.partitions=10
3. sql中设置分区方式
INSERT OVERWRITE TABLE
tab_name partition(partition_date=***)
select name,age,address from tmp_table Distribute by rand();