赞
踩
1.动态分区插入数据,会产生大量小文件
2.数据源本来就含有大量小文件
3.数据增量导入,如Sqoop数据导入,增量insert导入数据等
4.分桶表(主要是切分文件,容易产生小文件问题)
1.2.3都是数据导入的问题:
hive 中的小文件肯定是向 hive 表中导入数据时产生,所以先看下向 hive 中导入数据的几种方式
1.直接向表中插入数据
insert into table A values (1,'zhangsan',88),(2,'lisi',61);
这种方式每次插入时都会产生一个文件,多次插入少量数据就会出现多个小文件,但是这种方式生产环境很少使用,可以说基本没有使用的
2.通过load方式加载数据
- load data local inpath '/export/score.csv' overwrite into table A -- 导入文件
- load data local inpath '/export/score' overwrite into table A -- 导入文件夹
使用 load 方式可以导入文件或文件夹,当导入一个文件时,hive表就有一个文件,当导入文件夹时,hive表的文件数量为文件夹下所有文件的数量
3.通过查询方式加载数据
insert overwrite table A select s_id,c_name,s_score from B;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。