json转换为具有特殊字符的名称fiield的转换

时间:2017-05-03 06:15:22

标签: json scala avro

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

1 个答案:

答案 0 :(得分:0)

接近一个

使用One column创建简单表。

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

OR 接近两个

使用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