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

Tablestore:MaxCompute から Tablestore へのアクセス

最終更新日:Jun 21, 2026

MaxCompute の外部テーブルを使用すると、データ移行を行うことなく、Tablestore のデータに対して直接 SQL 分析を実行できます。 このガイドでは、同一 Alibaba Cloud アカウント配下にある Tablestore のデータテーブルにマッピングされる外部テーブルを MaxCompute で作成する手順を説明します。

背景情報

MaxCompute は、ペタバイト規模のデータウェアハウスと分析機能を提供するフルマネージドのビッグデータコンピューティングサービスです。 単一の DDL ステートメントを使用して MaxCompute に外部テーブルを作成し、外部データソースに接続してデータインジェストとエクスポートを行うことができます。 MaxCompute のネイティブテーブルが構造化データのみを格納するのとは異なり、外部テーブルは構造化データと非構造化データの両方をサポートします。

Tablestore と MaxCompute は異なる型システムを使用します。 次の表に、両サービス間のデータ型のマッピングを示します。

Tablestore

MaxCompute

STRING

STRING

INTEGER

BIGINT

DOUBLE

DOUBLE

BOOLEAN

BOOLEAN

BINARY

BINARY

前提条件

開始する前に、以下のものが準備できていることを確認してください。

  1. MaxCompute が有効化済みであること。

  2. MaxCompute のワークスペース。 詳細については、「ワークスペースの作成」をご参照ください。

  3. 認証用の AccessKey ペア。

  4. RAM コンソールで MaxCompute に Tablestore へのアクセス権限が付与されていること。 詳細については、「クロスアカウント権限付与」をご参照ください。

  5. Tablestore コンソールで Tablestore インスタンスとデータテーブルが作成済みであること。 詳細については、「インスタンスの作成」および「データテーブルの作成」をご参照ください。

    このガイドでは、以下のリソース例を使用します。

    • インスタンス名: cap1

    • データテーブル名: vehicle_track

    • プライマリキー: vid (INTEGER)、gt (INTEGER) (MaxCompute では BIGINT 型にマッピング)

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

      説明

      MaxCompute からアクセスする際は、Tablestore インスタンスのプライベートエンドポイントを使用してください。

    • インスタンスのネットワークアクセス制御を設定します。 デフォルトでは、Tablestore は任意のネットワークからのアクセスを許可します。 以下のようにデフォルト設定を維持します。

      設定は以下のとおりです。デフォルトの [アクセスタイプ][カスタム] です。 [許可するネットワークタイプ] で、[VPC][クラシックネットワーク][パブリックネットワーク] が選択されています。 [許可するソースタイプ] で、[信頼できるゲートウェイ (コンソール)] が選択されています。 [設定] をクリックして設定を保存します。

ステップ1:MaxCompute クライアントのインストールと設定

  1. MaxCompute クライアントをダウンロードして解凍します。

    説明

    お使いのマシンに Java Runtime Environment (JRE) 1.7 以降がインストールされていることを確認してください。

  2. conf/odps_config.ini ファイルを編集し、以下のように設定します。

    # Alibaba Cloud アカウントの AccessKey ペア。AccessKey ID と AccessKey シークレットで構成されます。 AccessKey ペアを表示するには、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。 この URL を開くと、ジョブの実行詳細を表示できます。
    log_view_host=http://logview.odps.aliyun.com
    # HTTPS 経由でのアクセスを有効にするかどうかを指定します。
    https_check=true
    説明

    odps_config.ini ファイルでは、番号記号 (#) がコメントを示しますが、MaxCompute クライアントでは、二重ハイフン (--) がコメントを示します。

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

    現在の MaxCompute プロジェクトのテーブルが表示されれば、正しく設定されています。

    odps@ MCOTStest>show tables;
    ALIYUN$document@aliyun-test.com:bank_data
    ALIYUN$document@aliyun-test.com:result_table
    OK

ステップ2:外部テーブルの作成

Tablestore の vehicle_track データテーブルにマッピングされる ots_vehicle_track という名前の MaxCompute 外部テーブルを作成します。

ターゲットのデータテーブルのプロパティは以下のとおりです。

  • インスタンス名: cap1

  • データテーブル名: vehicle_track

  • プライマリキー: vid (INTEGER)、gt (INTEGER) (MaxCompute では BIGINT 型にマッピング)

  • エンドポイント: 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)

次の表で、DDL ステートメントのパラメーターを説明します。

番号

パラメーター

説明

(1)

com.aliyun.odps.TableStoreStorageHandler

Tablestore 用の MaxCompute 組み込みストレージハンドラーです。 MaxCompute が Tablestore との間で読み書きする方法を定義します。

(2)

SERDEPROPERITES

シリアル化および逆シリアル化のプロパティインターフェイスです。 TableStoreStorageHandler を使用する場合、tablestore.columns.mappingtablestore.table.name の 2 つのプロパティが必要です。

(3)

tablestore.columns.mapping

必須。 MaxCompute がアクセスする Tablestore の列 (プライマリキー列と属性列を含む) を指定します。 コロン (:) が先頭に付く列名は、プライマリキー列を示します。 この例では、:vid:gt がプライマリキーで、残りの列は属性列です。 Tablestore テーブルのすべてのプライマリキー列を指定してください。 属性列については、MaxCompute がアクセスする必要のある列のみをリストアップしてください。

(4)

tablestore.table.name

アクセスする Tablestore テーブルの名前。 指定したテーブルが存在しない場合、MaxCompute はエラーを返します。 MaxCompute は Tablestore テーブルを自動的に作成しません。

(5)

LOCATION

インスタンス名やエンドポイントなど、Tablestore インスタンスの情報。

ステップ3:外部テーブルを介した Tablestore データのクエリ

重要

高い同時実行性は Tablestore インスタンスの負荷を増大させ、オンラインワークロードのレイテンシー増加やリクエスト失敗を引き起こす可能性があります。 並列度を制御するには、set odps.sql.mapper.split.size=256; を実行してください。 値を大きくすると同時実行性は低下し、小さくすると上昇します。 詳細については、「SQL チューニング」をご参照ください。

外部テーブルを作成すると、Tablestore のデータが MaxCompute エコシステムで利用可能になります。 MaxCompute SQL を使用してデータをクエリします。

-- VID が 4 未満、かつタイムスタンプが 1469171387 より前の車両データについて、平均速度と燃料消費量を計算します。
select vid,count(*),avg(speed),avg(oil_consumption) from ots_vehicle_track where vid <4 and gt<1469171387  group by vid;

結果の例:

odps@ analysis_vehicle>select vid,count(*), avg(speed),avg(oil_consumption) from ots_vehicle_track where vid <4 and gt<1469171387  group by vid;
ID = 20170306160538185gsvlupk2
Log view:
http://logview.odps.aliyun.com/logview/?h=http://service.odps.aliyun.com/api&p=analysis_vehicle&i=20170306160538185gsvlupk2&token=ajhxdXZNWWVPcTNrWkFOS0xpSGtoM2tFWGEwPSxPRFBT
09CTzoxNjA0MzM3MzgzMTc0NjE5LDE0ODk0MjExMzgseyJTdGF0ZW1lbnQiOlt7IkFjdGlvbiI6WyJvZHBzOlJlYWQiXSwiRWZmZWN0IjoiQWxsb3ciLCJSZXNvdXJjZSI6WyJhY3M6b2RwczoqOnByb2plY3RzL2NJSZXNvdXJjZSI6WyJhY3M6b2RwczoqOnByb2plY3RzL2
aGljbGUvaW5zdGFuY2VzLzIwMTcwMzA2MTYwNTM4MTg1Z3N2bHVwazIiXX1dLCJWZXJzaW9uIjoiMSJ9
aGljbGUvaW5zdGFuY2VzLzIwMTcwMzA2MTYwNTM4MTg1Z3N2bHVwazIiXX1dLCJWZXJzaW9uIjoiMSJ9
Job Queueing.
         STAGES      STATUS   TOTAL  COMPLETED  RUNNING  PENDING  BACKUP
M1_job_0 ..............   TERMINATED      1        1        0        0       0
R2_1_job_0 .............   TERMINATED      1        1        0        0       0
STAGES: 02/02    [==========================>>] 100%  ELAPSED TIME: 51.18 s
Summary:
+------------+------------+----------------------+----------------------+
| vid        | _c1        | _c2                  | _c3                  |
+------------+------------+----------------------+----------------------+
| 0          | 47         | 0.11622589796672624  | 6.5155061805308145   |
| 1          | 47         | 0.11200649789552555  | 6.5673983001829885   |
| 2          | 47         | 0.098971763146085    | 6.738738527883797    |
| 3          | 47         | 0.11503916531605494  | 6.6038902692751895   |
+------------+------------+----------------------+----------------------+