Hive gzip文件解压缩

4

我已经将一堆.gz文件加载到HDFS中,当我在其上创建原始表时,统计行数时发现了奇怪的行为。与未压缩表的count(*)结果相比,从gz表中获取的结果少了大约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

能否提供更多信息?比如HDFS中的文件名,select * from testselect * from test_gz的结果。 - pensz
1个回答

2
我已经解决了这个问题。某种方式下,gzip文件在map/reduce作业(hive或自定义java map/reduce)中没有完全解压缩。Mapreduce作业只读取大约450MB的gzip文件并将数据写出到HDFS而不是完全读取3.5GB的文件。奇怪的是,没有任何错误!由于文件是在另一台服务器上压缩的,我手动解压缩了它们,并在hadoop客户端服务器上重新压缩了它们。之后,我上传了新压缩的3.5GB文件到HDFS,然后hive能够完全计算所有记录并读取整个文件。Marcin

你好@Marcin,你有关于元数据gzip文件的问题吗?当我打印数据时,第一行会出现包含元数据的内容。你有任何想法如何解决这个问题吗? - dbustosp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接