0

我希望使用另一种方法来压缩文件以提高读/写性能,我探索的途径之一是使用 Snappy 压缩。

到目前为止,它一直很好,并且已经能够将其放入 HDFS 并使用 -text 命令解压缩以查看值。真正的问题发生在我尝试将数据导入配置单元时。

当我将数据导入配置单元时,我创建了一个简单的外部表以及设置参数以读取 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/.../'

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

4

1 回答 1

0

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

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

希望这些回答你的问题。

于 2014-08-07T12:57:06.990 回答