抽出、変換、読み込み (ETL) ツールとして Apache Hive を使用するUse Apache Hive as an Extract, Transform, and Load (ETL) tool

通常、受信データは、クリーニングし変換してから、分析を行うのに適した宛先に読み込む必要があります。You typically need to clean and transform incoming data before loading it into a destination suitable for analytics. 抽出、変換、および読み込み (ETL) の操作は、データを準備し、そのデータをデータの宛先に読み込むために実行されます。Extract, Transform, and Load (ETL) operations are used to prepare data and load it into a data destination. HDInsight 上の Apache Hive では、非構造化データを読み取り、必要に応じてそのデータを処理し、意思決定支援システム用のリレーショナル データ ウェアハウスにデータを読み込むことができます。Apache Hive on HDInsight can read in unstructured data, process the data as needed, and then load the data into a relational data warehouse for decision support systems. この方法においてデータはソースから抽出され、Azure Storage Blob や Azure Data Lake Storage などのスケーラブルなストレージに格納されます。In this approach, data is extracted from the source and stored in scalable storage, such as Azure Storage blobs or Azure Data Lake Storage. 次にデータは一連の Hive クエリを使用して変換され、最終的に、宛先データ ストアへの一括読み込みのための準備として Hive 内にステージングされます。The data is then transformed using a sequence of Hive queries and is finally staged within Hive in preparation for bulk loading into the destination data store.

ユース ケースとモデルの概要Use case and model overview

次の図に、ETL オートメーションのユース ケースとモデルの概要を示します。The following figure shows an overview of the use case and model for ETL automation. 入力データは、適切な出力を生成するために変換されます。Input data is transformed to generate the appropriate output. 変換中には、データのシェイプおよびデータ型に加えて、データの言語も変更される可能性があります。During that transformation, the data can change shape, data type, and even language. ETL プロセスでは、宛先の既存のデータに厳密に合うように、インペリアル法からメートル法への変換、タイム ゾーンの変更、精度の改善を行うことができます。ETL processes can convert Imperial to metric, change time zones, and improve precision to properly align with existing data in the destination. ETL プロセスでは、常に最新の状態がレポートされるように、または既存のデータに対するさらなる分析情報が提供されるように、新しいデータを既存のデータに結合することもできます。ETL processes can also combine new data with existing data to keep reporting up to date, or to provide further insight into existing data. レポート ツールやサービスなどのアプリケーションでは、このデータを目的の形式で利用できます。Applications such as reporting tools and services can then consume this data in the desired format.

ETL アーキテクチャとしての Apache Hive

Hadoop は、通常、膨大な数のテキスト ファイル (CSV など) か、数は少ないが頻繁に変更が発生するテキストファイル、あるいはこの両方をインポートする ETL プロセスで使用されます。Hadoop is typically used in ETL processes that import either a massive number of text files (like CSVs) or a smaller but frequently changing number of text files, or both. Hive は、データを宛先に読み込む前に、データの準備を行うのに優れたツールです。Hive is a great tool to use to prepare the data before loading it into the data destination. Hive では、CSV に対するスキーマを作成し SQL に似た言語を使用することで、データを操作する MapReduce プログラムを生成することができます。Hive allows you to create a schema over the CSV and use a SQL-like language to generate MapReduce programs that interact with the data.

Hive を使用して ETL を実行する一般的な手順は次のとおりです。The typical steps to using Hive to perform ETL are as follows:

  1. データを Azure Data Lake Storage または Azure Blob Storage に読み込みます。Load data into Azure Data Lake Storage or Azure Blob Storage.

  2. スキーマの格納時に Hive で使用するメタデータ ストア データベース (Azure SQL Database を使用) を作成します。Create a Metadata Store database (using Azure SQL Database) for use by Hive in storing your schemas.

  3. HDInsight クラスターを作成し、データ ストアを接続します。Create an HDInsight cluster and connect the data store.

  4. 読み取り時にデータ ストア内のデータに適用するスキーマを定義します。Define the schema to apply at read-time over data in the data store:

    DROP TABLE IF EXISTS hvac;
    
    --create the hvac table on comma-separated sensor data stored in Azure Storage blobs
    
    CREATE EXTERNAL TABLE hvac(`date` STRING, time STRING, targettemp BIGINT,
        actualtemp BIGINT,
        system BIGINT,
        systemage BIGINT,
        buildingid BIGINT)
    ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
    STORED AS TEXTFILE LOCATION 'wasbs://{container}@{storageaccount}.blob.core.windows.net/HdiSamples/SensorSampleData/hvac/';
    
  5. データを変換し、それを宛先に読み込みます。Transform the data and load it into the destination. 変換および読み込み時の Hive の使い方は複数あります。There are several ways to use Hive during the transformation and loading:

    • Hive を使用してデータをクエリおよび準備し、そのデータを CSV として Azure Data Lake Storage または Azure Blob Storage に保存します。Query and prepare data using Hive and save it as a CSV in Azure Data Lake Storage or Azure blob storage. SQL Server Integration Services (SSIS) のようなツールを使用して、それらの CSV を取得し、データを SQL Server などの宛先リレーショナル データベースに読み込みます。Then use a tool like SQL Server Integration Services (SSIS) to acquire those CSVs and load the data into a destination relational database such as SQL Server.
    • Hive ODBC ドライバーを使用して、Excel または C# からデータを直接クエリします。Query the data directly from Excel or C# using the Hive ODBC driver.
    • Apache Sqoop を使用して準備済みのフラットな CSV ファイルを読み取り、宛先リレーショナル データベースに読み込みます。Use Apache Sqoop to read the prepared flat CSV files and load them into the destination relational database.

データ ソースData sources

データ ソースは、通常、ご利用のデータ ストア内の既存のデータと一致させることができる外部データとなります。次に例を示します。Data sources are typically external data that can be matched to existing data in your data store, for example:

  • ソーシャル メディア データ、ログ ファイル、センサー、データ ファイルを生成するアプリケーション。Social media data, log files, sensors, and applications that generate data files.
  • 気象統計またはベンダーの売上数など、データ プロバイダーから取得したデータセット。Datasets obtained from data providers, such as weather statistics or vendor sales numbers.
  • 適切なツールまたはフレームワークを通してキャプチャ、フィルター処理、および処理されたストリーミング データ。Streaming data captured, filtered, and processed through a suitable tool or framework.

出力ターゲットOutput targets

Hive を使用して、次に示すようなさまざまなターゲットにデータを出力することができます。You can use Hive to output data to a variety of targets including:

  • SQL Server または Azure SQL Database などのリレーショナル データベース。A relational database, such as SQL Server or Azure SQL Database.
  • Azure SQL Data Warehouse などのデータ ウェアハウス。A data warehouse, such as Azure SQL Data Warehouse.
  • Excel。Excel.
  • Azure テーブルと BLOB ストレージ。Azure table and blob storage.
  • データが特定の形式に処理される、または特定の種類の情報構造体を含むファイルとしてデータが処理される必要があるアプリケーションまたはサービス。Applications or services that require data to be processed into specific formats, or as files that contain specific types of information structure.
  • Azure Cosmos DB などの JSON ドキュメント ストア。A JSON Document Store like Azure Cosmos DB.

考慮事項Considerations

ETL モデルは、通常、次の場合に使用されます。The ETL model is typically used when you want to:

  • 外部ソースから既存のデータベースまたは情報システムに、ストリーム データまたは大量の半構造化データもしくは非構造化データを読み込む。Load stream data or large volumes of semi-structured or unstructured data from external sources into an existing database or information system.
  • 多くの場合クラスターの中で複数の変換パスを使用して、読み込む前にデータのクリーニング、変換、検証を行う。Clean, transform, and validate the data before loading it, perhaps by using more than one transformation pass through the cluster.
  • 定期的に更新されるレポートと視覚化を生成する。Generate reports and visualizations that are regularly updated. たとえば、日中に生成するには時間がかかりすぎるレポートの場合、夜間に作成されるようにレポートをスケジュールすることができます。For example, if the report takes too long to generate during the day, you can schedule the report to run at night. Azure Scheduler と PowerShell を使用して、Hive クエリを自動的に実行することができます。You can use Azure Scheduler and PowerShell to automatically run a Hive query.

データのターゲットがデータベースでない場合、クエリ内で適切な形式 (CSV など) でファイルを生成することができます。If the target for the data isn't a database, you can generate a file in the appropriate format within the query, for example a CSV. このファイルは、Excel または Power BI にインポートすることができます。This file can then be imported into Excel or Power BI.

ETL プロセスの一環として、データに対して複数の操作を実行する必要がある場合は、該当する操作の管理方法を検討してください。If you need to execute several operations on the data as part of the ETL process, consider how you manage them. 操作をソリューション内でワークフローとして制御するのでなく、外部プログラムによって制御する場合は、いくつかの操作を並列に実行できるかどうかを判断し、各ジョブの完了のタイミングを検出する必要があります。If the operations are controlled by an external program, rather than as a workflow within the solution, you need to decide whether some operations can be executed in parallel, and to detect when each job completes. Hadoop 内で Oozie などのワークフロー メカニズムを使用する方法は、外部スクリプトまたはカスタム プログラムを使用して一連の操作の調整を試みるよりも簡単である可能性があります。Using a workflow mechanism such as Oozie within Hadoop may be easier than trying to orchestrate a sequence of operations using external scripts or custom programs. Oozie の詳細については、「Workflow and job orchestration」 (ワークフローおよびジョブ オーケストレーション) を参照してください。For more information about Oozie, see Workflow and job orchestration.

次の手順Next steps