1

複雑な json をハイブにインポートする方法。次の形式の Json ファイル: {"some-headers":"", "dump":[{"item-id":"item-1"},{"item-id":"item-2"},...]}. の下にフィールドを指定するためのハイブdump。Json ファイルのサイズは、現在のように 200MB を超えていませんが、ダンプであるため、すぐに GB に達します。他の可能な方法は大歓迎です。

4

2 に答える 2

2

End-to-End ソリューションの投稿。JSON をハイブ テーブルに変換するための段階的な手順:

ステップ1)Mavenがまだない場合はインストールします

>$ sudo apt-get install maven

ステップ2)gitがまだない場合はインストールします

>sudo git clone https://github.com/rcongiu/Hive-JSON-Serde.git

ステップ 3) $HOME/HIVE-JSON_Serde フォルダーに移動します。

ステップ 4) serde パッケージをビルドする

>sudo mvn -Pcdh5 clean package

ステップ 5) serde ファイルは $HOME/Hive-JSON-Serde/json-serde/target/json-serde-1.3.7-SNAPSHOT-jar-with-dependencies.jar にあります。

ステップ 6) ハイブの依存関係 jar として serde を追加します。

 hive> ADD JAR $HOME/Hive-JSON-Serde/json-serde/target/json-serde-1.3.7- SNAPSHOT-jar-with-dependencies.jar;

ステップ 7) $HOME/books.json に json ファイルを作成 (例)

{"value": [{"id": "1","bookname": "A","properties": {"subscription": "1year","unit": "3"}},{"id": "2","bookname":"B","properties":{"subscription": "2years","unit": "5"}}]}

ステップ 8) ハイブに tmp1 テーブルを作成する

 hive>CREATE TABLE tmp1 (
      value ARRAY<struct<id:string,bookname:string,properties:struct<subscription:string,unit:string>>>   
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES ( 
    'mapping.value' = 'value'   
) 
STORED AS TEXTFILE;

ステップ 9) json から tmp1 テーブルにデータをロードする

>LOAD DATA LOCAL INPATH '$HOME/books.json' INTO TABLE tmp1;

ステップ 10) tmp1 から展開操作を行うための tmp2 テーブルを作成します。この中間ステップは、マルチレベルの json 構造を複数の行に分割することです。 注: JSON 構造が単純で単一レベルの場合は、このステップを避けてください。

hive>create table tmp2 as 
 SELECT *
 FROM tmp1
 LATERAL VIEW explode(value) itemTable AS items;

ステップ 11) ハイブ テーブルを作成し、tmp2 テーブルから値をロードします。

hive>create table books as 
select value[0].id as id, value[0].bookname as name, value[0].properties.subscription as subscription, value[0].properties.unit as unit from tmp2;

ステップ 12) tmp テーブルを削除する

hive>drop table tmp1;
hive>drop table tmp2;

ステップ 13) ハイブ テーブルをテストする

hive>select * from books;

出力:

id 名 サブスクリプション ユニット

1B 1年 3

2B 2年 5

于 2016-08-02T18:07:51.277 に答える
0

HiveSerDe を実装することで、JSON を Hive にインポートできます。

このリンクは、サンプル実装として機能します。

https://github.com/rcongiu/Hive-JSON-Serde

これらのリンクも参照できます

JSON データから HIVE テーブルを作成するにはどうすればよいですか?

于 2013-02-24T18:32:16.853 に答える