Hive ETL: JSON、XML、テキスト データのロード例

ETL およびデータ ウェアハウス ツールとしての Hive Hadoopの エコシステムは、データ モデリング、データ操作、データ処理、データ クエリなどの機能を提供します。Hive でのデータ抽出とは、Hive にテーブルを作成し、構造化データと半構造化データをロードし、要件に基づいてデータをクエリすることを意味します。

バッチ処理の場合、カスタム マップを使用してカスタム定義のスクリプトを作成し、スクリプト言語を使用してスクリプトを削減します。 それは提供します SQL 同様の環境と簡単なクエリのサポート。

Hive を使用した構造化データの操作

構造化データとは、データが行と列の適切な形式であることを意味します。 これはもっと似ています RDBMS 適切な行と列を含むデータ。

ここでは、Hive のテキスト ファイルに存在する構造化データをロードします。

ステップ1) このステップでは、従業員の ID、名前、年齢、住所、給与、部門などの列名とデータ型を含むテーブル「employees_guru」を作成します。

Hive を使用した構造化データの操作

上記のスクリーンショットから、次のことがわかります。

  1. テーブル「employees_guru」の作成
  2. Employees.txt からテーブル「employees_guru」にデータをロードする

ステップ2) このステップでは、「Select」コマンドを使用して、このテーブルに格納されている内容を表示します。次のスクリーンショットでテーブルの内容を確認できます。

Hive を使用した構造化データの操作

– サンプルコードのスニペット

実行するクエリ

1) Create table employees_guru(Id INT, Name STRING, Age INT, Address STRING, Salary FLOAT, Department STRING)
> Row format delimited
> Fields terminated by ',';
2) load data local inpath '/home/hduser/Employees.txt' into TABLE employees_guru;
3) select * from employees_guru;

Hive (XML、JSON) を使用した半構造化データの操作

HiveはHadoopエコシステム内でETL機能を実行する。 ETLツール一部の種類のアプリケーションではマップ削減を実行するのが難しい場合がありますが、Hive は複雑さを軽減し、データ ウェアハウス セクターの観点から IT アプリケーションに最適なソリューションを提供します。

XMLやJSONなどの半構造化データは、Hiveを使用することでより簡単に処理できます。まず、Hiveをどのように使用できるかを見てみましょう。 XML.

XML から HIVE テーブルへ

ここでは、XML データを Hive テーブルにロードし、XML タグ内に格納されている値をフェッチします。

ステップ1) 文字列データ型の str カラムを持つテーブル「xmlsample_guru」を作成します。

Hive を使用した半構造化データの操作

上記のスクリーンショットから、次のことがわかります。

  1. テーブル「xmlsample_guru」の作成
  2. test.xml からテーブル「xmlsample_guru」へのデータのロード

ステップ2) 使い方 XPath () メソッドを使用すると、XML タグ内に格納されたデータを取得できます。

Hive を使用した半構造化データの操作

上記のスクリーンショットから、次のことがわかります。

  1. XPATH( ) メソッドを使用して、/emp/esal/ および /emp/ename/ に保存されている値を取得しています。
  2. 値は XML タグ内に存在します。 このステップでは、テーブル「xmlsample_guru」の XML タグの下に保存されている実際の値を表示しています。

ステップ3) このステップでは、テーブル「xmlsample_guru」の生の XML を取得して表示します。

Hive を使用した半構造化データの操作

上記のスクリーンショットから、次のことがわかります。

  • タグ付きで表示される実際の XML データ
  • 単一のタグを観察すると、親タグとして「emp」があり、子タグとして「ename」と「esal」があります。

コードスニペット:

実行するクエリ

1) create table xmlsample_guru(str string);                                                                                                   2) load data local inpath '/home/hduser/test.xml' overwrite  into table xmlsample_guru;
3) select xpath(str,'emp/ename/text()'), xpath(str,'emp/esal/text()') from xmlsample_guru;

JSON(Javaスクリプトオブジェクト表記法

Twitter と Web サイトのデータは JSON 形式で保存されます。 オンラインサーバーからデータを取得しようとすると、JSON ファイルが返されます。 Hive をデータ ストアとして使用すると、スキーマを作成することで JSON データを Hive テーブルにロードできます。

JSON から HIVE テーブルへ

ここでは、JSON データを Hive テーブルにロードし、JSON スキーマに格納されている値をフェッチします。

ステップ1) このステップでは、JSON テーブル名「json_guru」を作成します。 作成したら、実際のスキーマの内容をロードして表示します。

Json から Hive テーブルへ

上記のスクリーンショットから、次のことがわかります。

  1. テーブル「json_guru」の作成
  2. test.json からテーブル「json_guru」にデータをロードする
  3. json_guruテーブルに格納されているJSONファイルの実際のスキーマを表示する

ステップ2) get_json_object() メソッドを使用すると、JSON 階層に格納されているデータ値を取得できます。

Json から Hive テーブルへ

上記のスクリーンショットから、次のことがわかります。

  1. get_json_object (str,'$.ecode) を使用すると、テーブル json_guru から ecode 値をフェッチできます。 同様に get_json_object (str,'$.ename) 、get_json_object (str,'$.Sali) を使用すると、テーブル json_guru から ename sal 値がフェッチされます。
  2. json_guru の JSON 階層内に保存された値

コードスニペット

実行するクエリ

1) create table json_guru(str string);
2) load data inpath 'home/hduser/test.json' into table json_guru;
3) select * from json1;
4) select get_json_object(str,'$.ecode') as ecode, get_json_object(str,'$.ename') as ename ,get_json_object(str,'$.sal') as salary from json_guru;

複雑なJSONからHIVEテーブルへ

ここでは、複雑なJSONデータをHiveテーブルにロードし、JSONスキーマに格納された値を取得します。

ステップ1) 単一列フィールドを持つ complexjson_guru の作成

複雑なJSONからHiveテーブルへ

上記のスクリーンショットから、次のことがわかります。

  1. 文字列データ型として単一列フィールドを持つテーブル complexjson_guru の作成
  2. emp.json 複合 JSON ファイルから complexjson_guru にデータをロードする

ステップ2) get_json_object を使用すると、JSON ファイル階層内に格納されている実際のコンテンツを取得できます。

次のスクリーンショットから、complexjson_guru に保存されているデータの出力を確認できます。

複雑なJSONからHiveテーブルへ

ステップ3) このステップでは、「Select」コマンドを使用して、テーブル「complexjson_guru」内に格納されている複雑なJSONデータを実際に確認することができます。

複雑なJSONからHiveテーブルへ

- サンプル コード スニペット、

実行するクエリ

1) create table complexjson_guru(json string);
2) load data inpath 'home/hduser/emp.json' into table complexjson_guru;
3) select get_json_object(json,'$.ecode') as ecode ,get_json_object(json,'$.b') as code, get_json_object(json,'$.c') from complexjson_guru;
4) select * from complexjson_guru;

Hive in Real-time プロジェクト – いつ、どこで使用するか

Hadoop エコシステムで Hive を使用するタイミングと場所:

日時

  • Hadoopエコシステム上で強力でパワフルな統計関数を扱う場合
  • 構造化データ処理および半構造化データ処理を使用する場合
  • Hadoop を使用したデータ ウェアハウス ツールとして
  • HBASE によるリアルタイムのデータ取り込み、Hive を使用可能

場所

  • ETL とデータ ウェアハウス ツールを簡単に使用できるようにするため
  • SQL 型環境を提供し、HIVEQL を使用して SQL のようなクエリを実行する
  • 特定のクライアント要件に合わせて、カスタム指定のマップおよびリデューサー スクリプトを使用およびデプロイするには