2017-05-03 12 views
0

いずれもAvroスキーマなしでJsonからAvroへの変換を行っていますか?ここでキャッチするのはjsonという名前のフィールドに特殊文字があるためavr04sが失敗しています。動的性については、JSONから直接avroファイルを作成する必要があります。それが不可能な場合は、特殊文字を含むケースクラスまたはpojoを作成できます。しかし、すべての名前フィールドには、他の種類の特殊文字が含まれます。jsonからavroへの特殊文字によるFIELD変換

答えて

0

アプローチONE

一つの列を持つ単純なテーブルを作成します。

CREATE TABLE jsonTbl(line String) 

ロードJSONデータテーブルにget_json_objectを用いAVROテーブルに

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

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

に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 アプローチ2

JsonSerDeとJsonファイルが配置されている場所で外部テーブルを作成します。 AVROテーブルにデータを挿入し

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

ハイブ

でAVROテーブルを作成します

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

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

私はScalaまたはJavaでコードを使用してjsonをavroに変換するアプローチを求めていました –