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

标签 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/.../'

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

最佳答案

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

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

希望这些回答您的问题。

关于sql - 使用Sqoop和Snappy压缩从Hive读取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25129138/

相关文章:

hadoop - Hive PAM 无法使用 JDBC 打开客户端传输

hadoop - 配置单元 cli 中的 "Add <directory>"

mysql - hive 命令 - 显示表或任何不起作用的命令

MySQL 不区分大小写的 DISTINCT

javascript - 如何自动填写html表单中的输入字段

sql - 在 SQL 中如何选择使用一系列字符串?

hadoop - 检查 mapreduce 程序是否成功运行的不同方法有哪些

MySQL - 条件 SELECT 输出单独的列

hadoop - GlusterFS 或 Ceph 作为 Hadoop 的后端

hadoop - 如何在配置单元中实现数据范围的左连接