本トピックでは、単一の 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 メソッドの方が効率的です。JDBC メソッドは MapReduce プログラムを生成するため、同期効率が低下します。HDFS メソッドはデータフィルタリングやビューからのデータ読み取りをサポートしていないことにご注意ください。必要に応じて同期メソッドを選択してください。 |
テーブル | 同期する Hive テーブルを選択します。Hive データソースの開発環境と本番環境でテーブルのスキーマが同じであることを確認してください。 説明 ここでは、Hive データソースの開発環境のテーブルとテーブルスキーマのリストが表示されます。開発環境と本番環境でテーブル定義が異なる場合、開発環境ではタスクが正しく構成されていても、本番環境に送信した後に失敗する可能性があります。「テーブルが見つかりません」や「列が見つかりません」などのエラーが発生する場合があります。 |
Parquet スキーマ | Hive テーブルが Parquet 形式で保存されている場合は、対応する Parquet スキーマを構成します。 |
データ宛先 (MaxCompute) の構成
このドキュメントでは、単一の Hive テーブルをオフラインモードで MaxCompute に同期する方法について説明します。データ宛先はテーブルです。主要な構成に関する注記を以下に示します。
次の表で説明されていないパラメーターについては、デフォルト設定のままにしてください。
構成項目 | 構成に関する注記 |
トンネルリソースグループ | これは MaxCompute データ転送用のトンネルクォータです。デフォルトでは、MaxCompute の無料クォータである [パブリック転送リソース] が選択されています。支払い遅延や有効期限切れにより専用のトンネルクォータが利用できない場合、タスクは実行時に自動的にパブリック転送リソースに切り替わります。 |
テーブル | 同期する MaxCompute テーブルを選択します。標準の DataWorks ワークスペースを使用する場合、開発環境と本番環境の両方に同じ名前とスキーマを持つ MaxCompute テーブルが存在することを確認してください。 また、[ターゲットテーブルスキーマをワンクリックで生成] をクリックして、データを受け取るテーブルを自動で作成することもできます。その後、テーブル作成文を手動で調整できます。 説明 もし:
|
パーティション情報 | テーブルがパーティションテーブルの場合、パーティションキー列の値を入力します。
|
書き込みモード | 宛先テーブルに書き込む際に、既存のデータをクリアするか保持するかを選択します。 |
3. タスクの構成と検証
フィールドマッピング: ほとんどの場合、[同名フィールドのマッピング] または [同行フィールドのマッピング] によるマッピングで十分です。 ソースと宛先のフィールドの順序または名前が異なる場合は、手動でマッピングを調整できます。
チャネル制御: データ品質を確保するため、[ダーティデータレコードのポリシー] をダーティデータを拒否するように設定します。他のパラメーターはデフォルト設定のままでかまいません。
4. テストの構成と実行
オフライン同期ノードエディターページの右側で、[デバッグ設定] をクリックします。 テスト実行用に [リソースグループ] と [スクリプトパラメーター] を設定します。 次に、上部のツールバーで [実行] をクリックして、同期タスクが正常に実行されるかテストします。
左側のナビゲーションウィンドウで
をクリックし、次に [個人ディレクトリ] の右側にある
アイコンをクリックして、.sql拡張子のファイルを作成できます。次に、以下の SQL 文を実行して、宛先テーブルのデータをクエリし、データが期待どおりであるかを確認できます。説明このクエリメソッドでは、宛先の MaxCompute インスタンスを DataWorks の計算リソースとしてアタッチする必要があります。
.sqlファイルエディターページの右側で、[デバッグ設定] をクリックします。データソースの [タイプ]、[コンピューティングリソース]、および [リソースグループ] を指定します。次に、上部のツールバーで [実行] をクリックします。
SELECT * FROM <MaxCompute_destination_table_name> WHERE pt=<specified_partition> LIMIT 20;
5. スケジューリングの構成とタスクの公開
オフライン同期ノードの右側で、[スケジューリング] をクリックします。定期的な実行のための スケジューリング構成 パラメーターを設定します。次に、上部ツールバーの [公開] をクリックします。表示されるパネルで、画面の指示に従ってタスクを 公開 します。