impala 表t1使用的parquet压缩格式,所以文件块大小是1G,表t2使用的是普通文本,里面有566M的数据,块大小256M,未压缩。问题来了,我使用insert * t1 select * from t2时,在t1中居然产生了三个文件,每个文件大小划得很平均,每个文件大小一般都在65.45M大小。理论上它应该只产生一个文件才对啊。有没有哪们大侠给说明下,是哪里没有配置对么?!已经在生产环境使用,才发现这个奇怪的问题。我这里怀疑是不是impala使用的是按每个文件块写入一个文件呢?就是我的t2表块只有256M,那么里面的文件就会分三个块存储,那么impala在查询的写入的时候就针对每一个块写入一个文件?
hadoop配置的文件块大小是多少
我的猜想用实践是证明了,它和hadoop的块大小确实有关系,如果impala真是这样实现,就太恶心了!不知道是否哪里还有配置要加,不然就得改源代码。我记得hadoop客户端读多个块时,是透明的,肯定是一个文件读完了才会返回。而impala它不和datanode节点通信,使用的是本地读(直接读文件),那就是针对块进行的打开关闭操作。如果真是这样的话,我真得看看源代码实现了或改大hadoop的块大小