このトピックでは、同じ Alibaba Cloud アカウントに属する Tablestore と MaxCompute 間のシームレスな接続を確立する方法について説明します。
背景情報
MaxCompute は、ペタバイト規模のデータをウェアハウジングするための費用対効果が高く、完全に管理されたプラットフォームです。MaxCompute を使用すると、大量のデータを高速かつ効率的に処理および分析できます。単純なデータ定義言語 (DDL) ステートメントを実行して、MaxCompute に外部テーブルを作成し、外部テーブルを外部データソースに関連付けることができます。これにより、さまざまな形式でデータにアクセスしてエクスポートできます。MaxCompute テーブルには構造化データのみを含めることができます。ただし、外部テーブルを使用して、構造化データと非構造化データを処理できます。
Tablestore と MaxCompute は異なる種類のデータをサポートしています。次の表は、Tablestore と MaxCompute でサポートされているデータ型間のマッピングを示しています。
Tablestore | MaxCompute |
STRING | STRING |
INTEGER | BIGINT |
DOUBLE | DOUBLE |
BOOLEAN | BOOLEAN |
BINARY | BINARY |
準備
MaxCompute を使用して Tablestore にアクセスする前に、以下の準備が完了していることを確認してください。
MaxCompute がアクティブ化されています。
AccessKey ペアが作成されています。
リソースアクセス管理 (RAM) コンソールで、MaxCompute に Tablestore へのアクセスが許可されています。詳細については、クロスアカウント承認を参照してください。
インスタンスとテーブルがTablestoreコンソールで作成されます。詳細については、インスタンスの作成とテーブルの作成をご参照ください。
この例で作成されたインスタンスとテーブルに関する情報は次のとおりです。
インスタンス名: cap1
データテーブル名: vehicle_track
プライマリキー情報: vid(integer) と gt(integer)
エンドポイント:
https://cap1.cn-hangzhou.ots-internal.aliyuncs.com
説明MaxCompute を使用して Tablestore にアクセスする場合は、Tablestore のプライベートエンドポイントを使用することをお勧めします。
インスタンスのネットワークアクセス制御設定。デフォルトでは、Tablestore コンソール、VPC、クラシックネットワーク、およびインターネットから Tablestore インスタンスにアクセスできます。この例では、[ネットワークアクセス制御] セクションのデフォルト設定が使用されています。次の図は、[ネットワークアクセス制御] セクションのデフォルト設定を示しています。
手順 1: クライアントをインストールして構成する
MaxComputeクライアントのインストールパッケージをダウンロードして解凍します。
説明マシンにJRE 1.7以降がインストールされていることを確認してください。
conf/odps_config.ini ファイルを変更して、クライアントを構成します。次のサンプルコードは、クライアントを構成する方法の例を示しています。
# Alibaba Cloud アカウントの AccessKey ペアを指定します。AccessKey ペアは、AccessKey ID と AccessKey シークレットで構成されます。Alibaba Cloud アカウントの AccessKey ペアを取得するには、Alibaba Cloud 公式ウェブサイトにログオンし、Alibaba Cloud 管理コンソールに移動し、右上隅のプロフィール画像にポインターを移動して、「AccessKey 管理」をクリックします。 access_id=******************* access_key=********************* # アクセスするプロジェクトの名前を指定します。 project_name=my_project # MaxCompute のエンドポイントを指定します。 end_point=https://service.odps.aliyun.com/api # MaxCompute Tunnel サービスにアクセスするためのリンクを指定します。 tunnel_endpoint=https://dt.odps.aliyun.com # ジョブの実行後にクライアントが返す LogView URL を指定します。LogView URL にアクセスすると、ジョブに関する詳細情報を表示できます。 log_view_host=http://logview.odps.aliyun.com # HTTPS 経由のアクセスを有効にするかどうかを指定します。 https_check=true
説明odps_config.ini ファイルでは、シャープ記号 (
#
) を使用してコメントを追加します。MaxCompute クライアントは--
を使用してコメントを追加します。bin/odpscmd.bat を実行します。
show tables;
と入力します。現在のMaxComputeプロジェクト内のテーブルが表示されている場合は、上記の設定が有効です。
手順 2: 外部テーブルを作成する
vehicle_track という名前の Tablestore テーブルに関連付ける ots_vehicle_track という名前の MaxCompute データテーブルを作成します。
以下の項目では、関連付けられた Tablestore テーブルに関する情報を説明します。
インスタンス名: cap1
データテーブル名: vehicle_track
プライマリキー情報: vid(int) と gt(int)
エンドポイント:
https://cap1.cn-hangzhou.ots-internal.aliyuncs.com
CREATE EXTERNAL TABLE IF NOT EXISTS ots_vehicle_track
(
vid bigint,
gt bigint,
longitude double,
latitude double,
distance double ,
speed double,
oil_consumption double
)
STORED BY 'com.aliyun.odps.TableStoreStorageHandler' -- (1) Tablestore データを処理し、MaxCompute と Tablestore 間のインタラクションを定義する MaxCompute 組み込みストレージハンドラー。MaxCompute は関連ロジックを実装します。
WITH SERDEPROPERTIES ( -- (2) パラメータオプションを提供する操作。Tablestore データを処理するストレージハンドラーを使用する場合は、tablestore.columns.mapping パラメータと tablestore.table.name パラメータを構成する必要があります。
'tablestore.columns.mapping'=':vid, :gt, longitude, latitude, distance, speed, oil_consumption', -- (3) MaxCompute がアクセスする Tablestore テーブルの列。列には、プライマリキー列と属性列が含まれます。コロン(:)が列名に含まれている場合、その列は Tablestore テーブルのプライマリキー列です。この例では、:vid と :gt は Tablestore テーブルのプライマリキー列です。他の列は属性列です。マッピングを指定するときは、Tablestore テーブルのすべてのプライマリキー列を指定する必要があります。MaxCompute がアクセスする属性列のみを指定する必要があります。すべての属性列を指定する必要はありません。
'tablestore.table.name'='vehicle_track' -- (4) MaxCompute がアクセスする Tablestore テーブルの名前。指定された Tablestore テーブルの名前が存在しない場合は、エラーが発生します。この場合、MaxCompute は Tablestore テーブルを作成しません。
)
LOCATION 'tablestore://cap1.cn-hangzhou.ots-internal.aliyuncs.com'; -- (5) Tablestore テーブルが属する Tablestore インスタンスに関する情報。情報には、インスタンスの名前とエンドポイントが含まれます。
次の表にパラメータを示します。
シーケンス番号 | パラメータ | 説明 |
(1) | com.aliyun.odps.TableStoreStorageHandler | Tablestore データを処理し、MaxCompute と Tablestore 間のインタラクションを定義する MaxCompute 組み込みストレージハンドラー。MaxCompute は関連ロジックを実装します。 |
(2) | SERDEPROPERITES | パラメータオプションを提供する操作。Tablestore データを処理するストレージハンドラーを使用する場合は、tablestore.columns.mapping パラメータと tablestore.table.name パラメータを構成する必要があります。 |
(3) | tablestore.columns.mapping | 必須。MaxCompute がアクセスする Tablestore テーブルの列。列には、プライマリキー列と属性列が含まれます。コロン |
(4) | tablestore.table.name | MaxCompute がアクセスする Tablestore テーブルの名前。指定された Tablestore テーブルの名前が存在しない場合は、エラーが発生します。この場合、MaxCompute は Tablestore テーブルを作成しません。 |
(5) | LOCATION | Tablestore テーブルが属する Tablestore インスタンスに関する情報。情報には、インスタンスの名前とエンドポイントが含まれます。 |
手順 3: 外部テーブルを使用して Tablestore データにアクセスする
外部テーブルを作成すると、Tablestore データが MaxCompute にインポートされます。その後、MaxCompute SQL コマンドを使用して Tablestore データにアクセスできます。
-- タイムスタンプ 1469171387 より前の VID が 4 未満の車両の平均速度と燃料消費量に関する統計を収集します。
select vid,count(*),avg(speed),avg(oil_consumption) from ots_vehicle_track where vid <4 and gt<1469171387 group by vid;
コマンド出力の例: