使用Sqoop和Snappy压缩从Hive读取值

时间:2014-08-04 23:37:54

标签: sql hadoop hive sqoop snappy

我希望使用另一种方法压缩文件以实现读/写性能,我探索的其中一个途径是使用Snappy压缩。

到目前为止,它已经非常好了,并且已经能够将其转换为HDFS并使用-text命令对其进行解压缩以查看值。当我尝试将数据导入配置单元时,会出现真正的问题。

当我将数据导入hive时,我创建一个简单的外部表,同时设置参数以读取Snappy压缩文件......

SET hive.exec.compress.output=true;
SET mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;
SET mapred.output.compression.type=BLOCK;
CREATE EXTERNAL TABLE IF NOT EXISTS test(...
..
)
LOCATION '/user/.../'

当我从test运行SELECT COUNT(*)时;我得到了正确的行值;但是,如果我运行SELECT * FROM test limit 100;我看到的都是NULL值。为什么会这样?有什么想法吗?

1 个答案:

答案 0 :(得分:0)

在这些情况下,你的mapreduce程序生成的hive无法找到snappy库,所以他们无法解压缩数据。为此尝试在hive auxpath中添加snappy.jar,它可以在sqoop.Also的lib目录中找到你能看到hive为你的查询生成的MapReduce程序的日志和配置,以检查是否在mapreduce中加载了snappy.jar文件。

设置Hive auxpath需要使用以下参数启动hive shell: hive --auxpath

希望这些回答你的问题。