【问题标题】:json to avro conversion for name fiield with special characters具有特殊字符的名称字段的 json 到 avro 转换
【发布时间】:2017-05-03 06:15:22
【问题描述】:

是否有人在没有 Avro 架构的情况下完成了 Json 到 Avro 的转换。这里的问题是 json 在名称字段中有特殊字符,因此 avr04s 失败。为了动态性,我需要直接从 JSON 创建 avro 文件。如果这不可能,我可以创建一个带有特殊字符的案例类或 pojo。但是所有名称字段都将具有一种或另一种特殊字符。

【问题讨论】:

    标签: json scala avro


    【解决方案1】:

    接近一号

    创建一列的简单表格。

    CREATE TABLE jsonTbl(line String)
    

    将json数据加载到表中

    LOAD DATA INPATH  '/user/demo/pg54505.txt' INTO TABLE jsonTbl;
    

    在 Hive 中创建 AVRO 表

    CREATE TABLE as_avro(ID String, ename String, esal Int) STORED AS AVRO;
    

    使用 get_json_object() 将数据插入 AVRO 表

    INSERT OVERWRITE TABLE as_avro SELECT get_json_object(fieldname, '$.emp.ID'), get_json_object(fieldname, '$.emp.ename'), get_json_object(fieldname, '$.ename.esal') FROM jsonTbl
    

    方法二

    使用 JsonSerDe 和放置 Json 文件的位置创建外部表。

    CREATE EXTERNAL TABLE jsonTbl(id string, ename string, esal int) ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe' LOCATION '/user/demo/';
    

    在 Hive 中创建 AVRO 表

    CREATE TABLE as_avro(ID String, ename String, esal Int) STORED AS AVRO;
    

    将数据插入 AVRO 表。

    INSERT OVERWRITE TABLE as_avro SELECT ID, ename, esal) FROM jsonTbl
    

    【讨论】:

    • 我要求在 Scala 或 java 中使用代码将 json 转换为 avro 的方法
    猜你喜欢
    • 1970-01-01
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    • 2017-06-15
    • 1970-01-01
    • 2022-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多