在Impala中,parquet存储格式的默认压缩方式为snappy。通过以下命令可以修改该配置:
set compression_code=snappy; (snappy,none,gzip...)
在hive中通过命令查看该表使用了哪种压缩方式:
inputFormat:org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat, compressed:false
hive命令的方式目前还有bug,在社区中对应的问题为HIVE-2250
https://issues.apache.org/jira/browse/HIVE-2250
要想确认Parquet文件是否被压缩可以使用CDH提供的工具parquet-tools,它可以查看一个Parquet的详细元数据信息,如字段信息,是否被压缩以及压缩格式等。
./parquet-tools meta d34b421236b6ffa2-98b4828e000000e3_448743101_data.0.parq
可以看到我们的parquet文件是以SNAPPY默认压缩方式进行的压缩。
//查看parquet文件中字段gender_name的dump信息
parquet_tools dump -c gender_name -d /path/to/parquetfile
parquet_tools dump -d /path/to/parquetfile
parquet_tools head -n 10 /path/to/parquetfile
parquet_tools meta /path/to/parquetfile
parquet_tools schema /path/to/parquetfile
parquet_tools可执行文件依赖于parquet-tools-${PARQUET_VERSION}.jar,这可以通过查看parquet_tools的内容知道。通过该jar包可以轻易的在应用中嵌入该功能而免去大量工作去解析代码。