すべてのプロダクト
Search
ドキュメントセンター

DataWorks:単一の EMR Hive テーブルから MaxCompute へのオフライン同期

最終更新日:Mar 05, 2026

このドキュメントでは、単一の E-MapReduce (EMR) Hive テーブルを MaxCompute に同期するシナリオを例に、データソースの設定、ネットワーク接続の確立、オフライン同期ノードの設定に関するベストプラクティスを説明します。

背景情報

Hive は、Hadoop で大規模なデータを保存、クエリ、分析するために使用できます。このツールは、構造化データファイルをデータベーステーブルにマッピングし、SQL 文を MapReduce ジョブに変換することで SQL クエリ機能を提供します。

前提条件

  • サーバーレスリソースグループを購入済みであること。

  • Hive データソースと MaxCompute データソースを作成済みであること。詳細については、「データソースの設定」をご参照ください。

  • リソースグループとデータソース間のネットワーク接続を確立済みであること。詳細については、「ネットワーク接続ソリューション」をご参照ください。

    説明

    パブリックエンドポイントを使用して排他的リソースグループを EMR に接続する場合、EMR クラスターのセキュリティグループルールを設定して、排他的リソースグループの Elastic IP (EIP) アドレスからのアクセスを許可する必要があります。セキュリティグループのインバウンドルールでは、10000、9093、8020 などの必要な EMR クラスターポートへのアクセスを許可する必要があります。

制限事項

ソースデータを MaxCompute の外部テーブルに同期することはサポートされていません。

操作手順

ステップ 1:ノードの作成とタスクの設定

ノードを作成し、コードレス UI を使用する一般的な手順については、「コードレス UI でタスクを設定」をご参照ください。

ステップ 2:データソースと宛先の設定

データソース (Hive) の設定

このセクションでは、この例の Hive テーブルである Hive データソースを設定するための主要なパラメーターについて説明します。

パラメーター

説明

Hive Read Method

  • Read data from HDFS files.:Hive Reader プラグインは Hive Metastore サービスにアクセスして、設定されたデータテーブルに関する情報 (HDFS ファイルのストレージパス、ファイル形式、デリミタなど) を解析します。その後、HDFS ファイルから直接データを読み取ります。

  • Read data using Hive JDBC (supports conditional filtering).:Hive Reader プラグインは、Hive JDBC クライアントを使用して HiveServer2 サービスに接続し、データを読み取ります。このメソッドでは、where 句を使用してデータをフィルタリングし、SQL を使用して直接データを読み取ることができます。

説明

HDFS メソッドの方が効率的です。JDBC メソッドは MapReduce プログラムを生成するため、同期パフォーマンスが低下します。HDFS メソッドは、条件付きフィルタリングやビューからの読み取りをサポートしていないことにご注意ください。要件に最も適したメソッドを選択してください。

Table

Hive データソースの開発環境と本番環境の両方で、テーブルスキーマが同一であることを確認してください。

説明

このセクションには、開発環境のテーブルのリストとテーブルスキーマが表示されます。開発環境と本番環境でテーブル定義が異なる場合、タスクは開発環境では正しく設定されていても、本番環境では「テーブルが見つかりません」や「列が見つかりません」などのエラーで失敗する可能性があります。

Parquet スキーマ

Hive テーブルが Parquet 形式で保存されている場合は、対応する Parquet スキーマを設定する必要があります。

データ宛先 (MaxCompute) の設定

このセクションでは、MaxCompute データ宛先を設定するための主要なパラメーターについて説明します。

説明

次の表で説明されていないパラメーターは、デフォルト値のままでかまいません。

パラメーター

説明

Tunnel Resource Group

データ転送に使用される MaxCompute Tunnel クォータです。デフォルトでは、「パブリック転送リソース」が選択されています。これは MaxCompute が提供する無料のクォータです。支払い遅延や有効期限切れにより排他的な Tunnel クォータが利用できなくなった場合、タスクは実行時に自動的に「パブリック転送リソース」に切り替わります。

Table

ターゲットの MaxCompute テーブルを選択します。標準の DataWorks ワークスペースを使用している場合は、開発環境と本番環境の両方に、同じ名前で一貫したテーブルスキーマを持つ MaxCompute テーブルが存在することを確認してください。

また、Generate Destination Table Schema をクリックすることもできます。システムはデータを受け取るためのテーブルを自動的に作成します。テーブル作成文は手動で調整できます。

説明

次の点にご注意ください:

  • ターゲットの MaxCompute テーブルが開発環境に存在しない場合、オフライン同期ノードを設定する際に、宛先テーブルのドロップダウンリストで見つけることができません。

  • ターゲットの MaxCompute テーブルが本番環境に存在しない場合、テーブルが見つからないため、公開後に同期タスクは失敗します。

  • 開発環境と本番環境でテーブルスキーマに一貫性がない場合、スケジュール実行時の列マッピングがオフライン同期ノードで設定されたマッピングと異なり、誤ったデータ書き込みにつながる可能性があります。

Partition Information

宛先テーブルがパーティション分割されている場合は、パーティション列の値を指定します。

  • 値は ds=20220101 のような固定値にすることができます。

  • 値は ds=${bizdate} のようなスケジューリングシステムパラメーターにすることができます。システムは実行時にパラメーターをスケジュールされた値に自動的に置き換えます。

Write Method

ターゲットテーブルのデータを上書きするか追加するかを指定します。

ステップ 3:タスクの設定と検証

  • フィールドマッピング:通常、Map Fields with the Same Name または Map Fields in the Same Line を使用できます。ソースと宛先のフィールドの順序や名前が異なる場合は、マッピングを手動で調整できます。

  • チャネルコントロール:データ品質を確保するために、Policy for Dirty Data Records を設定してダーティデータをすべて拒否します。他のパラメーターは、最初はデフォルト値のままでかまいません。

ステップ 4:タスクの設定とデバッグ

  1. オフライン同期ノード設定ページの右側で、Run Configuration をクリックします。デバッグ実行のために Resource GroupScript Parameters を設定します。その後、上部のツールバーで Run をクリックして、同期パイプラインが正常に実行されるかテストします。

  2. 左側のナビゲーションウィンドウで、image をクリックし、次に Personal Directory の右側にある image をクリックして、.sql 拡張子のファイルを作成します。 次の SQL 文を実行して宛先テーブルをクエリし、データが想定どおりであることを確認します。

    説明
    SELECT * FROM <your_maxcompute_destination_table> WHERE pt=<your_partition> LIMIT 20;

ステップ 5:スケジューリングの設定とタスクの公開

オフライン同期ノードの右側で、Scheduling Settings をクリックします。「スケジューリングの設定」で説明されているように、定期実行のパラメーターを設定します。その後、上部のツールバーで Publish をクリックし、画面の指示に従ってタスクを公開します。