Hive 如何将压缩的AVRO文件导入Impala表?

Hive 如何将压缩的AVRO文件导入Impala表?,hive,compression,avro,impala,bigdata,Hive,Compression,Avro,Impala,Bigdata,在我的工作中,我将AVRO文件复制到HDFS中,然后在impala中执行“刷新”,从而将AVRO文件导入impala表 但是当我想用压缩文件做这件事时,它不起作用 我找到的关于使用avro表启用压缩的唯一文档是以下链接: 以下是我的工作: 在配置单元外壳中启用配置单元压缩: 配置单元>设置配置单元.exec.compress.output=true 配置单元>设置avro.output.codec=bzip2 创建一个表: 创建表log\u bzip2( timestampbigint注释“来自

在我的工作中,我将AVRO文件复制到HDFS中,然后在impala中执行“刷新”,从而将AVRO文件导入impala表

但是当我想用压缩文件做这件事时,它不起作用

我找到的关于使用avro表启用压缩的唯一文档是以下链接:

以下是我的工作:

  • 在配置单元外壳中启用配置单元压缩:

    配置单元>设置配置单元.exec.compress.output=true

    配置单元>设置avro.output.codec=bzip2

  • 创建一个表:

    创建表
    log\u bzip2
    (
    timestamp
    bigint注释“来自反序列化程序”,
    appid
    string注释“来自反序列化程序”,
    clientid
    string注释“来自反序列化程序”,
    statkey
    string注释“来自反序列化程序”,
    expid
    string注释“来自反序列化程序”,
    modid
    string注释“来自反序列化程序”,
    value
    双注释“来自反序列化程序”,
    摘要
    字符串注释“来自反序列化程序”,
    自定义
    字符串注释“来自反序列化程序”) 被分割(
    day
    string) 行格式SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe' 以输入格式存储 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat' 输出格式 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat' TBLProperty( '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中添加分区和刷新:

    更改表log_bzip2添加分区(day=“2016-03-07”)位置“/user/hive/warehouse/adhoc_data_fast.db/log_bzip2/2016-03-07/”

    刷新日志

  • 查询但不工作:

    从log_bzip2 limit 10中选择*; 查询:从日志中选择*限制10

    警告:无效的AVRO_版本_标题:“42 5a 68 39”


  • 我怎样才能把它做好?谢谢

    事实证明,avro格式有自己的方式来压缩数据,而不是手动压缩生成的avro文件。因此,我们需要做的是在写入文件时将compress选项添加到AVRO writer,然后由AVRO编码器压缩生成的文件。将此文件放入配置单元就可以了。没有其他需要配置的内容。

    事实证明,avro格式有自己的方式来压缩数据,而不是手动压缩生成的avro文件。因此,我们需要做的是在写入文件时将compress选项添加到AVRO writer,然后由AVRO编码器压缩生成的文件。将此文件放入配置单元就可以了。没有其他需要配置的内容