Sqoop snappy压缩无法正常工作

时间:2017-06-26 22:01:03

标签: hadoop hive parquet snappy

我有以下sqoop脚本,它应该在镶木地板中获取数据并使用snappy压缩。

sqoop import \ 
--hive-drop-import-delims \
--fields-terminated-by '\001' \
--connect '<Connection URL>' \
--query 'select * from <db_name>.<table_name> where $CONDITIONS' \
--username <username> \
--password <password> \
--split-by '<split-by-key>' \
-m=4 \
--input-null-string '' \
--input-null-non-string '' \
--inline-lob-limit 0 \
--target-dir <hdfs/location/where/files/should/land> \
--compression-codec org.apache.hadoop.io.compress.SnappyCodec \
--as-parquetfile \
--map-column-java NOTES_DETAIL=String,NOTES=String \

一旦脚本成功完成,我进入hdfs位置[&#39; hdfs / location / where / files / should / land&#39;]并看到既没有应用snappy压缩也没有显示_SUCCUSS文件。为什么会这样?

这是我在列出该文件夹中的文件时看到的内容

21cbd1a6-d58b-4fdc-b332-7433e582ce0b.parquet
3956b0ff-58fd-4a87-b383-4fecc337a72a.parquet
3b42a1a9-4aa7-4668-bdd8-41624dec5ac6.parquet

正如您在文件名中看不到.snappy或_SUCCESS文件。

2 个答案:

答案 0 :(得分:1)

您不会在Parquet文件的扩展名中看到使用了哪种压缩。在Parquet文件中,数据在内部以块的形式压缩。使用编解码器选择,您可以指定应该为整个文件中的每个块使用哪个编解码器。仍然,Parquet规范允许您更改每个数据块中的压缩编解码器,因此您可以混合Parquet文件中的压缩编解码器。有些工具会生成.snappy.parquet个文件来指示所选的压缩级别,但这只是装饰性的,因为压缩信息存储在文件的元数据中。

要检查您的Parquet文件是否已经过压缩,请使用parquet-tools检查文件。

答案 1 :(得分:0)

使用以下参数启用压缩:

-z,-compress

参考:https://sqoop.apache.org/docs/1.4.2/SqoopUserGuide.html