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

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

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

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

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

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

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

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

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

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

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

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 機能を実行します ecosとして機能することによりシステム ETLツール。 一部の種類のアプリケーションではマップ削減を実行するのが難しい場合がありますが、Hive では com を削減できます。plexデータ ウェアハウス分野の IT アプリケーションに最適なソリューションを提供します。

XMLやJSONなどの半構造化データを少ない通信量で処理可能plexHive を使用して実行します。 まず、Hive をどのように使用できるかを見ていきます。 XML.

XML から HIVE テーブルへ

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

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

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

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

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

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

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

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

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

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

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

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

  • タグ付きで表示される実際の 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(JavaScriptオブジェクト表記)

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

JSON から HIVE テーブルへ

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

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

Json から Hive テーブルへ

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

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

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

Json から Hive テーブルへ

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

  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;

とplex JSON から HIVE テーブルへ

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

ステップ1) comの作成plex単一列フィールドの json_guru

とplex Json から Hive テーブルへ

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

  1. テーブルコムで作成plex文字列データ型として単一列フィールドを持つ json_guru
  2. データをcomにロードしていますplexemp.json com の json_guruplex JSONファイル

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

フォロよりwing スクリーンショットでは、com に保存されているデータの出力を確認できます。plexjson_guru。

とplex Json から Hive テーブルへ

ステップ3) このステップでは、「選択」コマンドを使用して、実際に com を表示できます。plex テーブル「com」内に保存された JSON データplexjson_guru”

とplex 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 をいつ、どこで使用するか Ecosシステム:

日時

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

場所

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