Hive和Spark当中对小文件的处理
数仓面试高频考点:
【在Hive中如何解析小文件过多问题,指定的是:处理表中数据时,有很多小文件】
| Table Parameters: | NULL | NULL |
| | bucketing_version | 2 |
| | numFiles | 1 |
| | numRows | 0 |
| | rawDataSize | 0 |
| | totalSize | 656 |
| | transient_lastDdlTime | 1631525001 |
如果没有显示表的统计信息,执行如下命令,再次查看表信息
ANALYZE TABLE db_hive.emp COMPUTE STATISTICS;
| Table Parameters: | NULL | NULL |
| | COLUMN_STATS_ACCURATE | {"BASIC_STATS":"true"} |
| | bucketing_version | 2 |
| | numFiles | 1 |
| | numRows | 14 |
| | rawDataSize | 643 |
| | totalSize | 656 |
| | transient_lastDdlTime | 1655113125 |
| | NULL | NULL |
第一种,将小文件合并成一个大文件
第二种,使用SparkContext中提供: wholeTextFiles 方法,专门读取小文件数据。
将每个文件作为一条KV存储在RDD中, K:文件名的绝对路径,V:文件的内容
用于解决小文件的问题,可以将多个小文件变成多个KV,自由指定分区个数