我已经将一堆 .gz 文件加载到 HDFS 中,当我在它们之上创建一个原始表时,我在计算行数时看到了奇怪的行为。比较 gz 表和未压缩表的 count(*) 结果,结果有约 85% 的差异。文件 gz 压缩后的表记录较少。有人见过这个吗?
CREATE EXTERNAL TABLE IF NOT EXISTS test_gz(
col1 string, col2 string, col3 string)
ROW FORMAT DELIMITED
LINES TERMINATED BY '\n'
LOCATION '/data/raw/test_gz'
;
select count(*) from test_gz; result 1,123,456
select count(*) from test; result 7,720,109
我能够解决这个问题。不知何故,gzip 文件在 map/reduce 作业(hive 或自定义 java map/reduce)中没有完全解压缩。 Mapreduce 作业只会读取大约 450 MB 的 gzip 文件并将数据写入 HDFS,而不会完全读取 3.5GZ 文件。奇怪了,一点错误都没有!
由于文件是在另一台服务器上压缩的,因此我手动解压它们并在hadoop客户端服务器上重新压缩它们。之后,我将新压缩的3.5GZ文件上传到HDFS,然后hive能够完整统计读取整个文件的所有记录。
Marcin
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)