すべてのプロダクト
Search
ドキュメントセンター

Tablestore:Tablestore に同じアカウント内の MaxCompute からアクセスする

最終更新日:Dec 28, 2024

このトピックでは、同じ 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 にアクセスする前に、以下の準備が完了していることを確認してください。

  1. MaxCompute がアクティブ化されています。

  2. ワークスペースが作成されています

  3. AccessKey ペアが作成されています。

  4. リソースアクセス管理 (RAM) コンソールで、MaxCompute に Tablestore へのアクセスが許可されています。詳細については、クロスアカウント承認を参照してください。

  5. インスタンスとテーブルがTablestoreコンソールで作成されます。詳細については、インスタンスの作成テーブルの作成をご参照ください。

    この例で作成されたインスタンスとテーブルに関する情報は次のとおりです。

    • インスタンス名: cap1

    • データテーブル名: vehicle_track

    • プライマリキー情報: vid(integer) と gt(integer)

    • エンドポイント: https://cap1.cn-hangzhou.ots-internal.aliyuncs.com

      説明

      MaxCompute を使用して Tablestore にアクセスする場合は、Tablestore のプライベートエンドポイントを使用することをお勧めします。

    • インスタンスのネットワークアクセス制御設定。デフォルトでは、Tablestore コンソール、VPC、クラシックネットワーク、およびインターネットから Tablestore インスタンスにアクセスできます。この例では、[ネットワークアクセス制御] セクションのデフォルト設定が使用されています。次の図は、[ネットワークアクセス制御] セクションのデフォルト設定を示しています。

      image

手順 1: クライアントをインストールして構成する

  1. MaxComputeクライアントのインストールパッケージをダウンロードして解凍します。

    説明

    マシンにJRE 1.7以降がインストールされていることを確認してください。

  2. 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 クライアントは -- を使用してコメントを追加します。

  3. bin/odpscmd.bat を実行します。show tables; と入力します。

    現在のMaxComputeプロジェクト内のテーブルが表示されている場合は、上記の設定が有効です。

    odps2

手順 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 テーブルの列。列には、プライマリキー列と属性列が含まれます。コロン (:) が列名に含まれている場合、その列は Tablestore テーブルのプライマリキー列です。この例では、:vid:gt は Tablestore テーブルのプライマリキー列です。他の列は属性列です。マッピングを指定するときは、Tablestore テーブルのすべてのプライマリキー列を指定する必要があります。MaxCompute がアクセスする属性列のみを指定する必要があります。すべての属性列を指定する必要はありません。

(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;

コマンド出力の例:

odps1