【发布时间】:2016-06-24 17:20:23
【问题描述】:
在我的工作中,我将 AVRO 文件导入到 impala 表中,方法是将文件复制到 HDFS,然后在 impala 中执行“刷新”。
但是当我想使用压缩文件时,它不起作用。
我发现的关于使用 avro 表启用压缩的唯一文档是此链接:http://www.cloudera.com/documentation/archive/impala/2-x/2-1-x/topics/impala_avro.html#avro_compression_unique_1。
这是我的工作:
-
在 hive shell 中启用 Hive 压缩:
hive> 设置 hive.exec.compress.output=true;
hive> 设置 avro.output.codec=bzip2;
-
创建表:
创建表
log_bzip2(timestampbigint COMMENT '来自反序列化器',appidstring COMMENT '来自反序列化器',clientidstring COMMENT '来自反序列化器',statkeystring COMMENT '来自反序列化器',expidstring COMMENT '来自反序列化器',modidstring COMMENT '来自反序列化器',valuedouble COMMENT '来自反序列化器',summary字符串 COMMENT '来自反序列化器',custom字符串 COMMENT '来自反序列化器') 由 (day字符串) 行格式SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe' 存储为输入格式 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat' 输出格式 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat' TBL 属性 ( 'avro.schema.url'='hdfs://szq2.appadhoc.com:8020/user/hive/log.avsc'); -
将压缩的 AVRO 文件加载到 HDFS:
hdfs dfs -put log.2016-03-07.1457184357726.avro.bz2 /user/hive/warehouse/adhoc_data_fast.db/log_bzip2/2016-03-07
-
在 Impala shell 中添加分区和刷新:
alter table log_bzip2 add partition (day="2016-03-07") location '/user/hive/warehouse/adhoc_data_fast.db/log_bzip2/2016-03-07/';
刷新log_bzip2;
-
查询它但不起作用:
从 log_bzip2 限制 10 中选择 *; 查询:select * from log_bzip2 limit 10
警告:AVRO_VERSION_HEADER 无效:'42 5a 68 39'
我怎样才能做到正确?谢谢!
【问题讨论】:
标签: hive compression avro impala bigdata