【问题标题】:Hive Json SerDE for ORC or RC Format用于 ORC 或 RC 格式的 Hive Json SerDE
【发布时间】:2017-04-05 01:54:06
【问题描述】:

是否可以使用带有 RC 或 ORC 文件格式的 JSON serde?我正在尝试使用文件格式 ORC 插入 Hive 表并以序列化 JSON 的形式存储在 azure blob 中。

【问题讨论】:

    标签: hive hive-serde


    【解决方案1】:

    好像没有

    insert overwrite local directory '/home/cloudera/local/mytable' 
    stored as orc 
    select '{"mycol":123,"mystring","Hello"}'
    ;
    
    create external table verify_data (rec string) 
    stored as orc 
    location 'file:////home/cloudera/local/mytable'
    ;
    
    select * from verify_data
    ;
    

    推荐
    {"mycol":123,"mystring","Hello"}

    create external table mytable (myint int,mystring string)
    row format serde 'org.apache.hive.hcatalog.data.JsonSerDe' 
    stored as orc
    location 'file:///home/cloudera/local/mytable'
    ;
    

    myint 我的字符串
    失败并出现异常 java.io.IOException:java.lang.ClassCastException:
    org.apache.hadoop.hive.ql.io.orc.OrcStruct 无法转换为 org.apache.hadoop.io.Text

    JsonSerDe.java:

    ...
    import org.apache.hadoop.io.Text;
    ...
    
      @Override
      public Object deserialize(Writable blob) throws SerDeException {
    
        Text t = (Text) blob;
      ...
    

    【讨论】:

      【解决方案2】:

      您可以使用某种转换步骤来执行此操作,例如分桶步骤,该步骤将在目标目录中生成 ORC 文件,并在分桶后安装具有相同架构的配置单元表。如下所示。

      CREATE EXTERNAL TABLE my_fact_orc
      (
        mycol STRING,
        mystring INT
      )
      PARTITIONED BY (dt string)
      CLUSTERED BY (some_id) INTO 64 BUCKETS
      STORED AS ORC
      LOCATION 's3://dev/my_fact_orc'
      TBLPROPERTIES ('orc.compress'='SNAPPY');
      
      ALTER TABLE my_fact_orc ADD IF NOT EXISTS PARTITION (dt='2017-09-07') LOCATION 's3://dev/my_fact_orc/dt=2017-09-07';
      
      ALTER TABLE my_fact_orc PARTITION (dt='2017-09-07') SET FILEFORMAT ORC;
      
      SELECT * FROM my_fact_orc WHERE dt='2017-09-07' LIMIT 5;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-02
        • 2017-09-15
        • 2016-09-08
        • 1970-01-01
        • 1970-01-01
        • 2016-02-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多