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

DataWorks:単一の EMR Hive テーブルをオフラインで MaxCompute に同期

最終更新日:Nov 28, 2025

本トピックでは、単一の E-MapReduce (EMR) Hive テーブルをオフラインモードで MaxCompute に同期する方法について説明します。データソースの構成、ネットワーク接続、同期タスクの構成に関するベストプラクティスを提供します。

背景情報

Hive は Hadoop 上に構築されたデータウェアハウスツールです。データの抽出、変換、ロード (ETL) を行います。Hive は Hadoop 内の大規模なデータセットを格納、クエリ、分析できます。構造化データファイルをデータベーステーブルにマッピングし、SQL 文を MapReduce タスクに変換することで SQL クエリ機能を提供します。DataWorks の Data Integration を使用すると、Hive から他の宛先にデータを同期したり、他のソースから Hive にデータを同期したりできます。

事前準備

  • Serverless リソースグループを購入します。

  • Hive データソースと MaxCompute データソースを作成します。詳細については、「データソースの構成」をご参照ください。

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

    説明

    専用リソースグループと EMR にパブリックネットワーク接続を使用する場合、EMR クラスターのセキュリティグループにルールを追加する必要があります。このルールでは、専用リソースグループの Elastic IP (EIP) アドレスからのアクセスを許可する必要があります。インバウンドルールでは、10000、9093、8020 などの EMR クラスターのアクセスポートでのトラフィックを許可する必要があります。

制限事項

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

操作手順

1. ノードの作成とタスクの構成

本トピックでは、コードレス UI でノードを作成し、タスクを構成する一般的な手順については説明しません。詳細については、「コードレス UI で同期ノードを構成」をご参照ください。

2. データソースと宛先の構成

データソース (Hive) の構成

このドキュメントでは、単一の Hive テーブルをオフラインモードで MaxCompute に同期する方法について説明します。データソースは Hive テーブルです。主要な構成パラメーターを以下に示します。

構成項目

構成に関する注記

Hive の読み取りメソッド

  • HDFS ファイルからデータを読み取る:Hive Reader プラグインは Hive Metastore サービスにアクセスして、構成されたデータテーブルの Hadoop 分散ファイルシステム (HDFS) ストレージパス、ファイル形式、区切り文字などの情報を解析します。その後、プラグインは HDFS ファイルからテーブルデータを読み取ります。

  • Hive JDBC を使用してデータを読み取る (条件付きフィルターをサポート):Hive Reader プラグインは、Java Database Connectivity (JDBC) クライアントを介して HiveServer2 サービスに接続してデータを読み取ります。このメソッドは、`WHERE` 句によるデータフィルタリングをサポートし、SQL を使用して直接データを読み取ります。

説明

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

テーブル

同期する Hive テーブルを選択します。Hive データソースの開発環境と本番環境でテーブルのスキーマが同じであることを確認してください。

説明

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

Parquet スキーマ

Hive テーブルが Parquet 形式で保存されている場合は、対応する Parquet スキーマを構成します。

データ宛先 (MaxCompute) の構成

このドキュメントでは、単一の Hive テーブルをオフラインモードで MaxCompute に同期する方法について説明します。データ宛先はテーブルです。主要な構成に関する注記を以下に示します。

説明

次の表で説明されていないパラメーターについては、デフォルト設定のままにしてください。

構成項目

構成に関する注記

トンネルリソースグループ

これは MaxCompute データ転送用のトンネルクォータです。デフォルトでは、MaxCompute の無料クォータである [パブリック転送リソース] が選択されています。支払い遅延や有効期限切れにより専用のトンネルクォータが利用できない場合、タスクは実行時に自動的にパブリック転送リソースに切り替わります。

テーブル

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

また、[ターゲットテーブルスキーマをワンクリックで生成] をクリックして、データを受け取るテーブルを自動で作成することもできます。その後、テーブル作成文を手動で調整できます。

説明

もし:

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

  • 本番環境に宛先の MaxCompute テーブルが存在しない場合、同期タスクを送信して公開した後、スケジュールされた実行時に失敗します。これは、宛先テーブルが見つからないためです。

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

パーティション情報

テーブルがパーティションテーブルの場合、パーティションキー列の値を入力します。

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

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

書き込みモード

宛先テーブルに書き込む際に、既存のデータをクリアするか保持するかを選択します。

3. タスクの構成と検証

  • フィールドマッピング: ほとんどの場合、[同名フィールドのマッピング] または [同行フィールドのマッピング] によるマッピングで十分です。 ソースと宛先のフィールドの順序または名前が異なる場合は、手動でマッピングを調整できます。

  • チャネル制御: データ品質を確保するため、[ダーティデータレコードのポリシー] をダーティデータを拒否するように設定します。他のパラメーターはデフォルト設定のままでかまいません。

4. テストの構成と実行

  1. オフライン同期ノードエディターページの右側で、[デバッグ設定] をクリックします。 テスト実行用に [リソースグループ][スクリプトパラメーター] を設定します。 次に、上部のツールバーで [実行] をクリックして、同期タスクが正常に実行されるかテストします。

  2. 左側のナビゲーションウィンドウで image をクリックし、次に [個人ディレクトリ] の右側にある image アイコンをクリックして、.sql 拡張子のファイルを作成できます。次に、以下の SQL 文を実行して、宛先テーブルのデータをクエリし、データが期待どおりであるかを確認できます。

    説明
    SELECT * FROM <MaxCompute_destination_table_name> WHERE pt=<specified_partition> LIMIT 20;

5. スケジューリングの構成とタスクの公開

オフライン同期ノードの右側で、[スケジューリング] をクリックします。定期的な実行のための スケジューリング構成 パラメーターを設定します。次に、上部ツールバーの [公開] をクリックします。表示されるパネルで、画面の指示に従ってタスクを 公開 します。