このドキュメントでは、単一の 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 |
説明
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 をクリックすることもできます。システムはデータを受け取るためのテーブルを自動的に作成します。テーブル作成文は手動で調整できます。 説明
次の点にご注意ください:
|
|
Partition Information |
宛先テーブルがパーティション分割されている場合は、パーティション列の値を指定します。
|
|
Write Method |
ターゲットテーブルのデータを上書きするか追加するかを指定します。 |
ステップ 3:タスクの設定と検証
-
フィールドマッピング:通常、Map Fields with the Same Name または Map Fields in the Same Line を使用できます。ソースと宛先のフィールドの順序や名前が異なる場合は、マッピングを手動で調整できます。
-
チャネルコントロール:データ品質を確保するために、Policy for Dirty Data Records を設定してダーティデータをすべて拒否します。他のパラメーターは、最初はデフォルト値のままでかまいません。
ステップ 4:タスクの設定とデバッグ
-
オフライン同期ノード設定ページの右側で、Run Configuration をクリックします。デバッグ実行のために Resource Group と Script Parameters を設定します。その後、上部のツールバーで Run をクリックして、同期パイプラインが正常に実行されるかテストします。
-
左側のナビゲーションウィンドウで、
をクリックし、次に Personal Directory の右側にある
をクリックして、.sql拡張子のファイルを作成します。 次の SQL 文を実行して宛先テーブルをクエリし、データが想定どおりであることを確認します。説明-
この方法でデータをクエリするには、宛先の MaxCompute プロジェクトを DataWorks のコンピューティングリソースとしてバインドする必要があります。
-
.sqlファイル編集ページの右側で、Run Configuration をクリックします。Type、Computing Resources、Resource Group を指定し、上部のツールバーで Run をクリックします。
SELECT * FROM <your_maxcompute_destination_table> WHERE pt=<your_partition> LIMIT 20; -
ステップ 5:スケジューリングの設定とタスクの公開
オフライン同期ノードの右側で、Scheduling Settings をクリックします。「スケジューリングの設定」で説明されているように、定期実行のパラメーターを設定します。その後、上部のツールバーで Publish をクリックし、画面の指示に従ってタスクを公開します。