JSON到AVRO转换,以特殊字符的名字命名



没有任何人在没有AVRO模式的情况下对Avro进行了JSON。这里的捕获是JSON在名称字段中具有特殊字符,因此AVR04S正在失败。对于动态性,我需要直接从JSON创建AVRO文件。如果不可能,我可以创建一个具有特殊字符的案例类或POJO。但是所有名称字段都将具有一种或另一种特殊的角色。

接近一个

用一列创建简单的表。

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

最新更新