本記事では、DataHub を使用してログデータを MaxCompute に移行する方法について説明します。
前提条件
MaxCompute へのアクセスを許可されたアカウントには、以下の権限が必要です:
-
MaxCompute プロジェクトの CreateInstance 権限。
-
MaxCompute テーブルの表示、変更、更新権限。
権限付与の詳細については、「MaxCompute permissions」をご参照ください。
背景情報
DataHub は、Alibaba Cloud のストリーミングデータ (Streaming Data) 処理プラットフォームです。DataHub にアップロードされたデータはリアルタイムテーブルに保存された後、5 分以内に定時タスクによって MaxCompute のオフラインテーブルに同期され、オフラインコンピューティングに使用されます。
DataHub コネクタを作成し、関連設定を指定するだけで、DataHub のストリーミングデータを MaxCompute に定期的にアーカイブする同期タスクを作成できます。
データ型マッピング
|
MaxCompute |
DataHub |
|
BIGINT |
BIGINT |
|
STRING |
STRING |
|
BOOLEAN |
BOOLEAN |
|
DOUBLE |
DOUBLE |
|
DATETIME |
TIMESTAMP |
|
DECIMAL |
DECIMAL |
|
TINYINT |
TINYINT |
|
SMALLINT |
SMALLINT |
|
INT |
INTEGER |
|
FLOAT |
FLOAT |
|
BLOB |
STRING |
|
MAP |
サポートされていません |
|
ARRAY |
サポートされていません |
操作手順
-
MaxCompute クライアント (odpscmd) で次のステートメントを実行して、DataHub から同期されたログデータを格納するためのテーブルを作成します。 以下にステートメントの例を示します。
CREATE TABLE test(id bigint, name string, salenum bigint) partitioned by (ds string); -
DataHub でプロジェクトを作成します。
-
DataHub コンソールにログインし、左上の隅でリージョンを選択します。
-
左側メニューで、[プロジェクト管理] をクリックします。
-
[プロジェクト一覧] 領域で、右上の隅にある [新しいプロジェクト] をクリックします。
-
[新しいプロジェクト] ページで、[名前] と [説明] を入力し、[作成] をクリックします。
-
-
Topic を作成します。
-
[プロジェクト一覧] 領域で、対象のプロジェクトの右側にある [表示] をクリックします。
-
プロジェクトの詳細ページで、右上の隅にある [Topic の作成] をクリックします。
-
[Topic の作成] ページで、[MaxCompute テーブル構造のインポート] を選択し、設定パラメーターを入力します。
設定パラメーターには、[Project 名]、[Table 名]、[AccessKey ID]、[AccessKey Secret] が含まれます。 入力が完了したら、[次へ] をクリックします。
-
[次のステップ] をクリックして、Topic 情報をさらに設定します。
説明-
スキーマ は MaxCompute テーブルに対応します。 DataHub Topic のスキーマのフィールド名、型、順序は、MaxCompute テーブルのフィールドと完全に一致している必要があります。いずれかの条件が満たされない場合、コネクタの作成は失敗します。
-
TUPLE 型の DataHub Topic を MaxCompute テーブルに同期できます。DataHub は BLOB 型のデータを STRING 型として扱います。
-
デフォルトでは、最大 20 個の Topic を作成できます。 それ以上作成する必要がある場合は、チケットをサブミットしてください。
-
DataHub Topic の所有者 (Owner) または作成者 (Creator) のアカウントには、作成や削除など、コネクタを操作する権限があります。
-
-
-
新しく作成した Topic にデータを書き込みます。
-
対象プロジェクトの [Topics] タブで、新しく作成した Topic の右側にある [表示] をクリックします。
-
Topic の詳細ページで、右上の隅にある [同期] をクリックします。
-
[Connector の作成] ページで [MaxCompute] をクリックし、関連パラメーターを設定し、[作成] をクリックします。
-
-
Connector の詳細情報を表示します。
-
左側メニューで、[プロジェクト管理] をクリックします。
-
[プロジェクト一覧] 領域で、対象のプロジェクトの右側にある [表示] をクリックします。
-
[Topics] 領域で、対象の Topic の右側にある [表示] をクリックします。
-
Topic の詳細ページで、[Connector] タブをクリックして、作成した Connector を表示します。
-
Connector の右側にある [表示] をクリックして、Connector の詳細情報を確認します。
DataHub は、デフォルトで 5 分ごと、またはデータが 60 MB に達したときに、MaxCompute のオフラインテーブルにデータを強制的に配信します。[同期オフセット] は、すでに同期されているデータレコードの数を示します。 Connector の詳細ページには、[Status] (EXECUTING など)、[Sync Latency] (同期レイテンシー、単位:秒)、[Endpoint]、[Project]、[Table]、[パーティションモード] などのフィールド情報が表示されます。
-
-
次のステートメントを実行して、ログデータが正常に配信されたかどうかを確認します。
SELECT * FROM test;次のような結果が返された場合、配信は成功です。 クエリを実行すると、結果テーブルには id、name、salenum の 3 つの列が含まれます。 新しく挿入された 3 つのレコードは、
id=60, name=三星11, salenum=909、id=61, name=三星12, salenum=606、id=62, name=三星13, salenum=2000です。