背景情報
このドキュメントでは、1 つの Alibaba Cloud アカウントで Table Store と MaxCompute 間のシームレスな接続を確立する方法について説明します。
ビッグデータコンピューティングサービスとして、 MaxComputeは、高速かつ完全にホストされた PB レベルのデータウェアハウスソリューションを提供し、大量のデータを経済的かつ効果的に分析し処理することができます。 単純な DDL ステートメントを使用して MaxCompute 上に外部テーブルを作成し、MaxCompute テーブルを外部データソースに関連付けてさまざまなデータアクセスおよび出力機能を提供できます。 MaxCompute テーブルには構造化データのみを含めることができ、外部テーブルには構造化データまたは非構造化データを含めることができます。
Table Store | MaxCompute |
---|---|
STRING 型 | STRING 型 |
INTEGER 型 | BIGINT 型 |
DOUBLE 型 | DOUBLE 型 |
BOOLEAN 型 | BOOLEAN 型 |
BINARY 型 | BINARY 型 |
準備
MaxCompute を使用して Table Store にアクセスする前の準備
- MaxCompute サービスをアクティベートします。
- MaxCompute プロジェクトを作成します。
- AccessKeyを作成します。
- RAM コンソールで、MaxCompute に Table Store へのアクセスを許可します。
-
方法1: Alibaba Cloud アカウントでログインし、 ここをクリックしてクイック認証します。
-
方法2: 以下のステップを使用して手動許可を実行してください。
- RAM コンソールにログインします。
- 「ロール」ページで、ユーザーロール AliyunODPSDefaultRole を作成します。
- 「ロールの詳細」ページで、ポリシーの内容を設定します。
ポリシーの内容は次のように設定されています。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "odps.aliyuncs.com" ] } } ], "Version": "1" }
- 「ポリシー」ページで、認証ポリシー AliyunODPSRolePolicy を作成します。
ポリシーの内容は次のように設定されています。
{ "Version": "1", "Statement": [ { "Action": [ "ots:ListTable", "ots:DescribeTable", "ots:GetRow", "ots:PutRow", "ots:UpdateRow", "ots:DeleteRow", "ots:GetRange", "ots:BatchGetRow", "ots:BatchWriteRow", "ots:ComputeSplitPointsBySize" ], "Resource": "*", "Effect": "Allow" } ] } アクセス許可をカスタマイズすることもできます。
- 「ロール」ページで、ロール AliyunODPSDefaultRole に AliyunODPSRolePolicy 許可を付与します。
-
- Table Store コンソールで、インスタンスを作成し、テーブルを作成します。
この例では、Table Store インスタンスとデータテーブルの詳細は次のとおりです。
- インスタンス名: cap1
- データテーブル名: vehicle_track
- プライマリキー情報: vid (整数)、gt (整数)
- エンドポイント: 「
https://cap1.cn-hangzhou.ots-internal.aliyuncs.com
」注 MaxCompute を使用して Table Store にアクセスするときは、Table Store のプライベートネットワークアドレスを使用することを推奨します。 - インスタンスのネットワークタイプを 任意のネットワークに設定します。
ステップ 1 クライアントのインストールと設定
- MaxCompute クライアントをダウンロードして解凍します。
注 JRE 1.7 以降のバージョンがコンピュータにインストールされていることを確認してください。
- "conf/odps_config.ini" ファイルを編集して、クライアントを設定します。
access_id=******************* access_key=********************* # Alibaba Cloud アカウントの AccessID と AccessKey は Alibaba Cloud の公式 Web サイトの「管理コンソール」の「AccessKeys」ページで確認できます。 project_name=my_project # アクセスしたいプロジェクトスペースを指定します。 end_point=https://service.odps.aliyun.com/api # MaxCompute サービスのアクセスリンク。 tunnel_endpoint=https://dt.odps.aliyun.com # MaxCompute Tunnel サービスのアクセスリンク。 log_view_host=http://logview.odps.aliyun.com # ジョブを実行した後、クライアントはそのジョブの LogView アドレスを返します。 アドレスにアクセスして、実行されたジョブの詳細を確認してください。 https_check=true # HTTPS アクセスを有効にするかどうかを決定します。
注 "odps_config.ini" ファイルでは、"#"
が注釈として使用されます。 MaxCompute クライアントでは、"--"
が注釈として使用されます。 - "bin/odpscmd.bat" を実行して、"show tables;" と入力します。
現在の MaxCompute プロジェクトの表の表示は、前の設定が正しいことを示しています。
ステップ 2 External Store の作成
MaxCompute データテーブル (ots_vehicle_track) を作成し、それを Table Store のテーブル (vehicle_track) に関連付けます。
この例では、関連付けられたテーブルは次のように詳述されています。
- インスタンス名: 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)
WITH SERDEPROPERTIES ( -- (2)
'tablestore.columns.mapping'=':vid, :gt, longitude, latitude, distance, speed, oil_consumption', -- (3)
'tablestore.table.name'='vehicle_track' -- (4)
)
LOCATION 'tablestore://cap1.cn-hangzhou.ots-internal.aliyuncs.com'; -- (5)
パラメーターは次のように記述されます。
番号 | パラメーター | 説明 |
---|---|---|
(1) | com.aliyun.odps.TableStoreStorageHandler | StorageHandler は、Table Store データを処理するために MaxCompute を内蔵しています。 これは MaxCompute と Table Store の間の相互作用を定義し、関連するロジックは MaxCompute によって実装されています。 |
(2) | SERDEPROPERITES | パラメーターオプションを提供するインターフェイスです。 TableStoreStorageHandler を使用する場合は、tablestore.columns.mapping と tablestore.table.name の 2 つのオプションを指定する必要があります。 |
(3) | tablestore.columns.mapping | 必須オプション です。 MaxCompute がアクセスする Table Store の列は、プライマリキーと属性の列を含みます。 Table Store では、":" を含む列 (この例では :vid や :gt) はプライマリキー列で、その他は属性列です。
マッピングを指定するときは、指定された Table Store テーブルのすべてのプライマリキー列と、MaxCompute がアクセスする属性列を指定する必要があります。 |
(4) | tablestore.table.name | アクセスする Table Store テーブルの名前。 指定された Table Store テーブル名が正しくない (存在しない) 場合、エラーが報告されます。 MaxCompute は Table Store テーブルを事前に作成しません。 |
(5) | LOCATION | インスタンス名とエンドポイントを含む、アクセスする Table Store のインスタンス情報です。 |
ステップ 3 外部テーブルを介した Table Store のデータへのアクセス
外部テーブルが作成されると、Table Store データが MaxCompute エコシステムに導入され、MaxCompute SQL コマンドを使用してアクセスできるようになります。
// タイムスタンプ 1469171387 より前に VID が 4 未満の車両の平均速度とオイル消費量に関する統計を提供します。
select vid,count(*),avg(speed),avg(oil_consumption) from ots_vehicle_track where vid <4 and gt<1469171387 group by vid;
次のような結果が返されます。