【问题标题】:Pig - reading Hive table stored as AvroPig - 读取存储为 Avro 的 Hive 表
【发布时间】:2016-09-27 06:29:49
【问题描述】:

我创建了一个以 Avro 文件格式存储的配置单元表。我正在尝试使用以下 Pig 命令加载相同的配置单元表

pig -useHCatalog;
hive_avro = LOAD 'hive_avro_table' using org.apache.hive.hcatalog.pig.HCatLoader();

当我尝试使用 DUMP 命令显示“hive_avro”时,出现“未能从 hive_avro_table 读取”错误。

请帮我解决这个问题。提前致谢

【问题讨论】:

    标签: hive apache-pig avro


    【解决方案1】:
    create table hivecomplex
    (name string,
    phones array<INT>,
    deductions map<string,float>,
    address struct<street:string,zip:INT>
    )
    ROW FORMAT DELIMITED
    FIELDS TERMINATED BY ','
    COLLECTION ITEMS TERMINATED BY '$'
    MAP KEYS TERMINATED BY '#'
    STORED AS AVRO
    ;
    
    hive> select * from hivecomplex;
    OK
    John    [650,999,9999]  {"pf":500.0}    {"street":"pleasantville","zip":88888}
    Time taken: 0.078 seconds, Fetched: 1 row(s)
    
    Now for the pig
    
    pig -useHCatalog;
    
    a = LOAD 'hivecomplex' USING org.apache.hive.hcatalog.pig.HCatLoader();
    dump a;
    
    ne.util.MapRedUtil - Total input paths to process : 1
    (John,{(650),(999),(9999)},[pf#500.0],(pleasantville,88888))
    

    【讨论】:

    • 感谢您的回复。你的例子很有效。我在 hive_avro 表中使用了复杂的数据类型(Array、Map 和 Struct)。看起来 Struct 数据类型导致了这个问题。有什么想法吗?
    • pig 支持复杂数据类型。可以使用 LIMIT 5 创建另一个关系并转储该关系。 hive_avro_table 是 hive 表还是视图? pig 不支持视图。如果 hive_avro_table 是外部表,则检查位置以及 /tmp 的权限
    猜你喜欢
    • 2021-07-27
    • 2015-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多