本トピックでは、E-MapReduce (EMR) の単一 Hive テーブルを MaxCompute にオフラインモードで同期する方法について説明します。データソースの構成、ネットワーク接続、および同期タスクの構成に関するベストプラクティスも併せてご案内します。
背景情報
Hive は Hadoop 上に構築されたデータウェアハウスツールであり、データの抽出(Extract)、変換(Transform)、ロード(Load)を実行します。Hive は Hadoop 上で大規模なデータセットを格納、クエリ、分析できます。また、構造化データファイルをデータベーステーブルにマッピングし、SQL 文を MapReduce タスクに変換することで SQL クエリ機能を提供します。DataWorks Data Integration を使用すると、Hive から他の宛先へ、または他のソースから Hive へデータを同期できます。
事前準備
サーバーレスリソースグループ を購入します。
Hive データソースと MaxCompute データソースを作成します。詳細については、「データソースの構成」をご参照ください。
リソースグループとデータソース間のネットワーク接続を確立します。詳細については、「ネットワーク接続ソリューションの概要」をご参照ください。
説明専用リソースグループと EMR 間でパブリックネットワーク接続を使用する場合、EMR クラスターのセキュリティグループにルールを追加する必要があります。このルールでは、専用リソースグループの Elastic IP(EIP)アドレスからのアクセスを許可する必要があります。また、インバウンドルールでは、EMR クラスターのアクセスポート(例:10000、9093、8020)へのトラフィックを許可する必要があります。
制限事項
ソースデータを MaxCompute の外部テーブル(foreign table)へ同期することはサポートされていません。
操作手順
1. ノードの作成とタスクの構成
ノードの作成およびコードレス UI におけるタスク構成の一般的な手順については、本トピックでは説明しません。詳細については、「コードレス UI での同期ノードの構成」をご参照ください。
2. データソースと宛先の構成
Hive データソースの構成
本ドキュメントでは、単一の Hive テーブルを MaxCompute にオフラインモードで同期する方法について説明します。データソースは Hive テーブルです。主な構成パラメーターを以下に示します。
構成項目 | 構成の注意点 |
Hive 読み取り方法 |
説明 HDFS 方式の方が効率的です。JDBC 方式では MapReduce プログラムが生成されるため、同期効率が低下します。なお、HDFS 方式ではデータフィルタリングやビューからのデータ読み取りはサポートされません。用途に応じて同期方法を選択してください。 |
テーブル | 同期対象の Hive テーブルを選択します。Hive データソースの開発環境および本番環境で、テーブルのスキーマが同一であることを確認してください。 説明 ここには、Hive データソースの開発環境から取得したテーブル一覧およびテーブルスキーマが表示されます。開発環境と本番環境のテーブル定義が異なる場合、開発環境ではタスクの構成が正しく行われても、本番環境へ提出後に失敗する可能性があります。「テーブルが見つかりません」または「カラムが見つかりません」といったエラーが発生する場合があります。 |
Parquet スキーマ | Hive テーブルが Parquet 形式で保存されている場合は、対応する Parquet スキーマを構成します。 |
MaxCompute 宛先の構成
本ドキュメントでは、単一の Hive テーブルを MaxCompute にオフラインモードで同期する方法について説明します。データの宛先はテーブルです。主な構成の注意点を以下に示します。
以下の表に記載のないパラメーターについては、デフォルト設定のまま使用してください。
構成項目 | 構成の注意点 |
Tunnel リソースグループ | これは MaxCompute のデータ転送に使用される Tunnel クォータです。デフォルトでは「パブリックトランスポートリソース」が選択されており、これは MaxCompute の無料クォータです。支払い遅延または有効期限切れにより専用 Tunnel クォータが利用不可となった場合、タスクは実行時に自動的にパブリックトランスポートリソースに切り替わります。 |
テーブル | 同期対象の MaxCompute テーブルを選択します。標準の DataWorks ワークスペースを使用している場合、開発環境および本番環境の両方に、同じ名前およびスキーマを持つ MaxCompute テーブルが存在することを確認してください。 また、ターゲットテーブルスキーマをワンクリックで生成 をクリックすると、システムがデータ受信用のテーブルを自動的に作成します。その後、テーブル作成文を手動で調整できます。 説明 条件:
|
パーティション情報 | テーブルがパーティションテーブルである場合、パーティションキー列の値を入力します。
|
書き込みモード | 宛先テーブルへの書き込み時に、既存のデータをクリアするか、保持するかを選択します。 |
3. タスクの構成と検証
フィールドマッピング:ほとんどの場合、同名フィールドの自動マッピング または 同一行のフィールドマッピング で十分です。ソースと宛先のフィールドの順序または名称が異なる場合は、マッピングを手動で調整できます。
チャネル制御:ダーティデータの品質保証のため、ダーティデータレコードの処理ポリシー を「拒否」に設定します。その他のパラメーターについては、デフォルト設定のまま使用してください。
4. テストの構成と実行
オフライン同期ノードのエディター画面右側で、Run Configuration をクリックします。テスト実行用の リソースグループ および スクリプトパラメーター を設定し、上部ツールバーの 実行 をクリックして、同期タスクが正常に実行されるかをテストします。
左側のナビゲーションウィンドウで
をクリックし、次に [個人ディレクトリ] の右側にある
アイコンをクリックして、.sql拡張子のファイルを作成できます。その後、次の SQL 文を実行して宛先テーブルのデータをクエリし、データが期待どおりであるかを確認できます。説明このクエリ方法を使用するには、宛先 MaxCompute インスタンスを DataWorks のコンピューティングリソースとしてアタッチ する必要があります。
.sqlファイルのエディター画面右側で、Run Configuration をクリックします。データソースの タイプ、コンピューティングリソース、および リソースグループ を指定し、上部ツールバーの 実行 をクリックします。
SELECT * FROM <MaxCompute_destination_table_name> WHERE pt=<specified_partition> LIMIT 20;
5. スケジュールの構成とタスクの公開
オフライン同期ノードの右側で、スケジュール をクリックします。定期実行のスケジュール構成 パラメーターを設定し、上部ツールバーの 公開 をクリックします。表示されるパネルで、画面上の指示に従って タスクの公開 を実行します。