没有任何人在没有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