HDFS データ用の外部 Hive テーブルを作成する方法

HadoopHadoopBeginner
オンラインで実践に進む

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

このチュートリアルでは、Hadoop Distributed File System (HDFS) に保存されているデータにアクセスするための外部 Hive テーブルを作成する手順を案内します。外部テーブルの設定方法とその中のデータをクエリする方法を学び、Hive SQL インターフェイスを使用して Hadoop データをシームレスに操作する方法を学びます。

Hive と HDFS のはじめに

Hive とは何か?

Hive は Hadoop の上に構築されたデータウェアハウスインフラストラクチャで、Hadoop の分散ファイルシステム (HDFS) に保存されているデータをクエリし、管理するための SQL ライクなインターフェイスを提供します。ユーザーは HiveQL と呼ばれる SQL ライクな言語でクエリを記述することができ、これらのクエリは Hadoop クラスタ上で実行できる MapReduce ジョブに変換されます。

HDFS とは何か?

HDFS (Hadoop Distributed File System) は、Hadoop アプリケーションで使用される主要なデータストレージシステムです。Hadoop クラスタ内の複数のマシンにまたがって大規模なデータセットを信頼性高く効率的に保存するように設計されています。HDFS はアプリケーションデータへの高スループットなアクセスを提供し、大規模なデータセットを持つアプリケーションに適しています。

Hive と HDFS の統合

Hive は HDFS と密接に統合されており、ユーザーが HDFS に保存されているデータを保存し、クエリすることができます。Hive は HDFS を主要なデータストレージシステムとして使用し、HDFS に保存されているデータにマッピングされるテーブルを作成する方法を提供します。

graph TD A[Hive] --> B[HiveQL] B --> C[MapReduce] C --> D[HDFS]

Hive と HDFS のユースケース

Hive と HDFS は、以下のシナリオで一般的に使用されます。

  • ビッグデータ分析: Hive と HDFS は、ウェブログ、センサーデータ、ソーシャルメディアデータなどの大規模なデータセットを保存し、分析するために使用されます。
  • データウェアハウジング: Hive は HDFS に保存されているデータをクエリし、管理するための SQL ライクなインターフェイスを提供するため、データウェアハウスを構築する際の人気のある選択肢となっています。
  • バッチ処理: Hive は、HDFS に保存されているデータのバッチ処理を行うために使用できます。例えば、レポートの生成、ETL (Extract, Transform, Load) 操作の実行、機械学習アルゴリズムの実行などがあります。

外部 Hive テーブルの作成

外部 Hive テーブルの理解

Hive では、外部テーブルとは、HDFS などの外部の場所に保存されているデータを指すテーブルです。Hive メタストア内にデータを保存する内部テーブルとは異なり、外部テーブルは単に別の場所に保存されているデータにアクセスする方法を提供します。

外部 Hive テーブルの作成

外部 Hive テーブルを作成するには、以下の SQL 文を使用できます。

CREATE EXTERNAL TABLE IF NOT EXISTS table_name (
  col1 data_type,
  col2 data_type,
  ...
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE
LOCATION '/path/to/hdfs/directory';

この文の各部分を分解してみましょう。

  • CREATE EXTERNAL TABLE IF NOT EXISTS table_name: 指定された名前で新しい外部テーブルを作成します。テーブルがすでに存在する場合は作成をスキップします。
  • (col1 data_type, col2 data_type, ...): テーブルの列とそのデータ型を定義します。
  • ROW FORMAT DELIMITED: 外部の場所にあるデータが特定の文字で区切られていることを指定します。
  • FIELDS TERMINATED BY ',': フィールドの区切り文字をコンマに設定します。
  • STORED AS TEXTFILE: データがテキストファイル形式で保存されていることを Hive に伝えます。
  • LOCATION '/path/to/hdfs/directory': データが保存されている HDFS ディレクトリを指定します。

例: 外部 Hive テーブルの作成

HDFS の /user/hive/data/sales.csv パスに CSV ファイルが保存されていると仮定して、以下のように外部 Hive テーブルを作成できます。

CREATE EXTERNAL TABLE IF NOT EXISTS sales (
  product STRING,
  quantity INT,
  price DOUBLE
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE
LOCATION '/user/hive/data/sales.csv';

これにより、productquantityprice の 3 つの列を持つ sales という名前の外部 Hive テーブルが作成されます。データはコンマで区切られた CSV 形式であることが想定されています。

外部テーブルのデータクエリ

外部テーブルのデータへのアクセス

外部 Hive テーブルを作成したら、関連する HDFS ディレクトリに保存されているデータを、他の Hive テーブルと同じようにクエリすることができます。テーブルに対してクエリを実行すると、データは自動的に HDFS から読み込まれます。

クエリの例

前のセクションで示したように、sales という名前の外部 Hive テーブルを作成したと仮定します。以下に実行できるクエリの例を示します。

-- Select all rows from the sales table
SELECT * FROM sales;

-- Select specific columns from the sales table
SELECT product, quantity, price FROM sales;

-- Filter the data based on a condition
SELECT * FROM sales WHERE quantity > 10;

-- Perform aggregations on the data
SELECT product, SUM(quantity) AS total_quantity, AVG(price) AS avg_price
FROM sales
GROUP BY product;

これらのクエリは、sales テーブルに関連付けられた HDFS ディレクトリからデータを取得し、結果をユーザーに返します。

外部テーブルの利点

Hive で外部テーブルを使用することにはいくつかの利点があります。

  1. データの独立性: 外部テーブルはデータを Hive メタストアから切り離すため、Hive テーブルの定義に影響を与えることなく、データを独立して管理および変更することができます。
  2. 柔軟性: 外部テーブルを使用すると、さまざまな形式(例: CSV、Parquet、ORC)や場所(例: HDFS、Amazon S3、Google Cloud Storage)に保存されているデータにアクセスできます。
  3. ストレージオーバーヘッドの削減: データが Hive メタストアに保存されないため、外部テーブルは内部テーブルと比較して少ないスペースしか必要としません。
  4. データ取り込みの容易性: 外部テーブルを使用すると、新しい Hive テーブルを作成する必要なく、データを直接 HDFS ディレクトリに追加できるため、Hive エコシステムへのデータ取り込みが容易になります。

外部 Hive テーブルの作成とクエリの方法を理解することで、Hive と HDFS の機能を効果的に活用して、ビッグデータを管理および分析することができます。

まとめ

この Hadoop を中心としたチュートリアルでは、HDFS に保存されているデータにアクセスするための外部 Hive テーブルの作成方法を学びました。外部テーブルを設定することで、基礎となる HDFS ファイルシステムと直接やり取りする必要なく、慣れ親しんだ Hive SQL 構文を使用してデータをクエリおよび操作することができます。このアプローチにより、Hadoop データの操作プロセスが簡素化され、Hive エコシステムの強力な機能を活用することが可能になります。