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

Tablestore:PrestoDB を使用して Tablestore にアクセスする

最終更新日:Mar 24, 2025

PrestoDB は、超並列処理 (MPP) アーキテクチャに基づくビッグデータ向けのオープンソースの分散 SQL クエリエンジンです。PrestoDB は、MySQL、Elasticsearch、Tablestore など、さまざまなデータソースに接続できます。PrestoDB を Tablestore に接続すると、PrestoDB で SQL ステートメントを実行して、Tablestore 内のデータのクエリと分析、Tablestore へのデータの書き込み、Tablestore へのデータのインポートを行うことができます。

背景情報

PrestoDB は、超並列処理 (MPP) アーキテクチャに基づくビッグデータ向けのオープンソースの分散 SQL クエリエンジンです。PrestoDB は、MySQL、Elasticsearch、Tablestore など、さまざまなデータソースに接続できます。PrestoDB は、クエリツール、抽出、変換、ロード (ETL) ツール、ストレステストツール、または統合クエリエンジンとして使用して、さまざまなシナリオでのデータ処理の要件を満たすことができます。

  • 日々の開発とトラブルシューティングのためのクエリツールとして、PrestoDB を使用すると、SQL ステートメントを実行してテーブル内のデータのクエリと分析を行うことができます。

  • ETL ツールとして、PrestoDB を使用すると、テーブルまたはインスタンス間でデータを複製したり、異なるデータソースからデータをコピーしたりできます。

  • ストレステストツールとして、PrestoDB を使用すると、複数のデータレコードを同時にスキャンまたは書き込むことができます。

  • データミッドエンドの統合クエリエンジンとして、PrestoDB はさまざまな異なるデータソースに接続できます。

PrestoDB を使用して Tablestore にアクセスする前に、PrestoDB を Tablestore に接続する必要があります。PrestoDB が Tablestore に接続されると、PrestoDB で SQL ステートメントを実行して、Tablestore 内のデータのクエリと分析、Tablestore へのデータの書き込み、Tablestore へのデータのインポートを行うことができます。

前提条件

  • Linux または macOS オペレーティングシステムを実行するサーバーが利用可能です。この例では、Linux オペレーティングシステムを実行するサーバーを使用します。

    説明

    Linux オペレーティングシステムを実行するサーバーがない場合は、Linux オペレーティングシステムを実行する Elastic Compute Service (ECS) インスタンスを使用することをお勧めします。詳細については、ECS コンソール (エクスプレスバージョン) を使用して ECS インスタンスを作成および管理する を参照してください。

    • 64 ビット Java 8 と Python 3 がサーバーにインストールされています。

    • PrestoDB がサーバーにインストールされています。

    • PrestoDB バージョンに基づく prestodb-tablestore-connector ファイルがダウンロードされ、PrestoDB インストールディレクトリの下の plugin ディレクトリにアップロードされます。ファイルはインストールディレクトリに解凍されます。

      次の表は、prestodb-tablestore-connector プラグインのバージョンと PrestoDB バージョンのマッピングを示しています。

      プラグインバージョン

      PrestoDB バージョン

      説明

      prestodb-tablestore-connector-0.280.tar

      0.280

      プラグインバージョンは最初のリリースです。このプラグインは、PrestoDB 0.280 以降でサポートされています。

  • PrestoDB を Tablestore に接続するために必要な Tablestore 情報 (Tablestore にアクセスするために使用されるアカウント、インスタンス情報、テーブル情報など) が取得されます。

  • Tablestore を管理するための権限が付与された RAM ユーザーの AccessKey ペアが取得されます。詳細については、AccessKey ペアの取得 を参照してください。

    説明

    RAM ユーザーに Tablestore を管理するための権限が付与されていない場合は、後続の操作を実行する前に、必要な権限を RAM ユーザーに付与する必要があります。詳細については、RAM ポリシーを使用して RAM ユーザーに権限を付与する を参照してください。

使用上の注意

  • PrestoDB を使用して、ワイドカラムモデル の Tablestore データにのみアクセスできます。

  • デフォルトでは、PrestoDB は UpdateRow 操作を呼び出すことによって Tablestore にデータを書き込みます。PrestoDB は PutRow 操作を呼び出すことによって Tablestore にデータを書き込むことはできません。PrestoDB を使用して Tablestore テーブルにデータを書き込む場合は、テーブルの 更新を許可 パラメータが はい に設定されていることを確認してください。そうでない場合、PrestoDB はテーブルにデータを書き込むことができません。

    重要
    • Tablestore テーブルの Time to Live パラメータを -1 以外の値に設定し、テーブルの検索インデックスを作成する場合は、テーブルの 更新を許可 パラメータを いいえ に設定する必要があります。PrestoDB はテーブルにデータを書き込むことができません。

    • PutRow 操作を呼び出すことによって PrestoDB を使用して Tablestore にデータを書き込む場合は、DingTalk グループ 36165029092 に参加して、Alibaba Cloud テクニカルサポートにお問い合わせください。

    テーブルを更新できるかどうかを確認するには、Tablestore コンソールのテーブルの 基本情報 タブにある 更新を許可 パラメータの値を確認するか、Tablestore SDK を使用して DescribeTable 操作を呼び出します。

    image.png

データ型のマッピング

Tablestore と PrestoDB は異なるデータ型をサポートしています。次の表は、Tablestore と PrestoDB でサポートされているデータ型間のマッピングを示しています。

Tablestore でサポートされているデータ型

PrestoDB でサポートされているデータ型

string

varchar

integer

bigint

double

double

boolean

boolean

binary

varbinary

手順

PrestoDB を使用して Tablestore にアクセスするには、次の手順を実行します。PrestoDB を Tablestore に接続し、PrestoDB の SQL CLI を実行し、スキーマとマッピングテーブルを作成してから、SQL ステートメントを実行してデータに対する操作を実行します。

手順 1: PrestoDB を Tablestore に接続する

PrestoDB をインストールした後、PrestoDB を Tablestore に接続するために、PrestoDB のカタログとスキーマを設定する必要があります。カタログ設定ファイルは、etc/catalog/tablestore.properties パスに保存されます。

設定の説明

Presto のカタログ設定ファイルには、コネクタ設定やスキーマ設定モードなどの設定が含まれています。connector パラメータは tablestore に設定する必要があります。スキーマ設定モードは、ローカル静的ファイルに基づく設定モード、またはメタデータテーブルに基づく動的設定モードのいずれかになります。

次の表は、スキーマ設定モードを示しています。

スキーマ設定モード

説明

設定方法

ローカル静的ファイルに基づく設定モード

静的ファイルを使用して、Tablestore リソースに関する情報 (Tablestore にアクセスするために使用されるアカウント、インスタンス情報、マッピングテーブルのメタデータなど) を事前に定義します。

重要

マッピングテーブルのメタデータを指定する場合、マッピングテーブルには Tablestore テーブルのすべてのプライマリキーカラムが含まれていなければならず、マッピングテーブルのプライマリキーカラムの順序は Tablestore テーブルの順序と同じでなければなりません。

PrestoDB を使用して Tablestore にアクセスする場合、静的ファイルで設定されている Tablestore インスタンスのテーブルにのみアクセスできます。

PrestoDB を実行する前に、次の手順を実行します。

  1. スキーマ設定モードをローカル静的ファイルに基づく設定モードに設定し、静的ファイルのフルパスを設定します。

  2. 静的ファイルにアカウント、インスタンス情報、テーブル情報を指定します。

(推奨) メタデータテーブルに基づく動的設定モード

スキーマを格納するために使用されるメタストアの情報のみを指定する必要があります。Tablestore リソースに関する情報を事前に定義する必要はありません。

PrestoDB を使用して Tablestore にアクセスする場合、スキーマとマッピングテーブルを動的に作成して、Tablestore リソースに関する情報を指定できます。スキーマを作成する場合は、アカウントとインスタンスに関する情報を指定する必要があります。マッピングテーブルを作成する場合は、マッピングテーブルに関する情報を設定する必要があります。

  1. PrestoDB を実行する前に、スキーマ設定モードをメタデータテーブルに基づく動的設定モードに設定し、スキーマを格納するために使用されるメタストアを設定します。

  2. PrestoDB を実行した後、CREATE SCHEMA ステートメントと CREATE TABLE ステートメントを実行して、必要なスキーマとマッピングテーブルを動的に作成します。

上記の表によると、ローカル静的ファイルに基づく設定モードを使用する場合は、アクセスするテーブルを事前に定義する必要があります。テーブルが事前に定義されていない場合は、テーブルにアクセスする前に手動でテーブルを設定する必要があります。メタデータテーブルに基づく動的設定モードを使用して PrestoDB を使用して Tablestore にアクセスする場合は、ビジネス要件に基づいて必要なテーブルを動的かつ柔軟に作成できます。メタデータテーブルに基づく動的設定モード でスキーマを設定することをお勧めします。

手順

カタログ設定ファイルでスキーマ設定モードを指定し、必要なパラメータを設定します。この例では、メタデータテーブルに基づく動的設定モードを使用します。

  1. PrestoDB がインストールされているディレクトリに移動します。ディレクトリの etc/catalog/ パスに tablestore.properties ファイルを作成します。

    重要

    ファイルを修正する前に、ファイルに対する実行権限があることを確認してください。

    次の図は、カタログ設定ファイルが配置されているディレクトリを示しています。

    image.png

  2. ビジネス要件に基づいて tablestore.properties ファイルの設定例を変更し、ファイルをカタログファイルにコピーします。

    メタデータテーブルに基づく動的設定モードでスキーマを設定する場合は、tablestore.schema-mode パラメータを meta-table に設定します。

    説明

    ローカルの静的ファイルに基づいて構成モードでスキーマを構成する場合は、tablestore.schema-mode パラメーターを file に設定し、tablestore.schema-file ファイルのフルパスを指定します。次に、静的ファイルにスキーマ情報を構成します。詳細については、「Presto サーバーの構成とサンプル SQL ステートメントの実行」トピックのPresto サーバーの構成セクションを参照してください。

    connector.name=tablestore
    tablestore.schema-mode=meta-table
    #tablestore.schema-mode=file
    tablestore.schema-file=/users/test/tablestore/presto/tablestore.schema
    tablestore.meta-instance=metastoreinstance
    tablestore.endpoint=http://metastoreinstance.cn-hangzhou,ots.aliyuncs.com/
    tablestore.accessid=****************
    tablestore.accesskey=**************************
    tablestore.meta-table=meta_table
    tablestore.auto-create-meta-table=true

    次の表は、tablestore.properties ファイルのパラメータを示しています。

    パラメータ

    必須

    説明

    connector.name

    tablestore

    はい

    コネクタの名前。パラメータを tablestore に設定する必要があります。

    tablestore.schema-mode

    meta-table

    はい

    スキーマ設定モード。この例では、パラメータは meta-table に設定されています。

    tablestore.meta-instance

    metastoreinstance

    はい

    メタデータを格納するために使用される Tablestore インスタンスの名前。ビジネス要件に基づいてこのパラメータの値を変更します。詳細については、インスタンス を参照してください。

    重要

    メタデータを格納するために指定する Tablestore インスタンスが Alibaba Cloud アカウント内で作成されていることを確認してください。

    tablestore.endpoint

    http://metastoreinstance.cn-hangzhou,ots.aliyuncs.com/

    はい

    メタデータを格納するために使用される Tablestore インスタンスのエンドポイント。ビジネス要件に基づいてこのパラメータの値を変更します。詳細については、エンドポイント を参照してください。

    tablestore.accessid

    ****************

    はい

    メタデータを格納するために使用される Tablestore インスタンスにアクセスするための権限が付与された RAM ユーザーの AccessKey ID と AccessKey シークレット。

    tablestore.accesskey

    **************************

    tablestore.meta-table

    meta_table

    はい

    メタデータを格納するために使用される Tablestore テーブルの名前。ビジネス要件に基づいてこのパラメータの値を変更します。

    tablestore.auto-create-meta-table

    true

    いいえ

    メタデータテーブルを自動的に作成するかどうかを指定します。デフォルト値は true で、スキーマを作成するときにメタデータテーブルが自動的に作成されることを指定します。

  3. 設定ファイルを保存して終了します。

    説明

    cat コマンドを実行して、設定ファイルが保存されているかどうかを確認できます。

手順 2: Presto の SQL CLI を実行する

Tablestore が PrestoDB に接続されたら、Presto サーバーを起動し、SQL ステートメントを実行できます。

  1. PrestoDB クライアントをインストールするために実行できるプログラムを取得します。

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

      この例では、presto-cli-0.280-executable.jar パッケージがダウンロードされます。

    2. PrestoDB クライアントのインストールパッケージを、PrestoDB がインストールされているディレクトリの下の bin ディレクトリに保存します。

    3. bin ディレクトリで次のコマンドを実行して、PrestoDB クライアントをインストールするために実行できるプログラムを取得します。

      # PrestoDB クライアントのインストールパッケージの名前を presto に変更します。presto-cli-0.280-executable.jar を PrestoDB クライアントの実際のバージョン名に置き換えます。
      mv presto-cli-0.280-executable.jar presto
      # ユーザーに presto ファイルに対する操作を実行するための権限を付与します。
      chmod +x presto

      次の図は、PrestoDB クライアントをインストールするために実行できるプログラムが配置されているディレクトリを示しています。

      image.png

  2. bin ディレクトリで次のコマンドを実行して、Presto サーバーを起動します。

    重要

    Presto サーバーを起動する場合は、コーディネーターと少なくとも 1 つのワーカーを個別に起動する必要があります。

    # Presto サーバーはフォアグラウンドまたはバックグラウンドで実行できます。Presto サーバーをフォアグラウンドで実行すると、操作ログをより簡単に表示できます。
    # 方法 1: Presto サーバーをバックグラウンドで実行する
    ./launcher start
    # 方法 2: Presto サーバーをフォアグラウンドで実行する
    ./launcher run
  3. bin ディレクトリで次のコマンドを実行して、SQL CLI を起動します。

    説明
    • デフォルトでは、PrestoDB はポート 8080 で実行されます。ポート設定を変更する場合は、etc/config.properties ファイルの http-server.http.port パラメータの値を変更します。

    • 特定の設定を変更した後、新しい設定を有効にするには、Presto サーバーを再起動する必要があります。

    • コマンドの ./presto は、bin ディレクトリにある PrestoDB クライアントをインストールするために実行できるプログラムの相対パスを示しています。

    ./presto --server localhost:8080 --catalog tablestore --schema default

    次の表は、コマンドのパラメータを示しています。

    パラメータ

    必須

    説明

    --server

    localhost:8080

    はい

    Presto サーバーの URI。値を Presto サーバーの実際の URI に置き換えます。パラメータの値は、PrestoDB がインストールされているディレクトリの etc/config.properties ファイルの discovery.uri パラメータの値と同じでなければなりません。

    --catalog

    tablestore

    はい

    カタログ設定ファイルの名前。この例では、パラメータは tablestore に設定されています。

    --schema

    default

    はい

    スキーマ設定。デフォルト設定を保持します。

手順 3: スキーマとマッピングテーブルを作成する

メタデータテーブルに基づく動的設定モードでスキーマを設定する場合は、スキーマを手動で作成および使用して、PrstoDB が接続されている Tablestore インスタンスを設定し、ユーザー権限を認証する必要があります。次に、Tablestore テーブルのマッピングテーブルを作成して、データのクエリと分析を行うことができます。

説明

ローカル静的ファイルに基づく設定モードでスキーマを設定する場合は、この手順をスキップします。

  1. 次のステートメントを実行して、スキーマを作成します。

    次の SQL ステートメントの例は、myinstance という名前の Tablestore インスタンスにアクセスするために使用される testdb という名前のスキーマを作成する方法の例を示しています。

    CREATE SCHEMA tablestore.testdb
    WITH (
      endpoint = 'https://myinstance.cn-hangzhou.ots.aliyuncs.com',
      instance_name = 'myinstance',
      access_id = '************************',
      access_key = '********************************'
    );

    次の表は、パラメータを示しています。

    パラメータ

    必須

    説明

    endpoint

    https://myinstance.cn-hangzhou.ots.aliyuncs.com

    はい

    Tablestore インスタンスのエンドポイント。詳細については、エンドポイント を参照してください。

    instance_name

    myinstance

    はい

    接続されている Tablestore インスタンスの名前。詳細については、インスタンス

    を参照してください。

    access_id

    ************************

    はい

    Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ID。

    access_key

    ********************************

    はい

    Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey シークレット。

  2. use <SCHEMA_NAME>; ステートメントを実行して、作成したスキーマを使用します。

    <SCHEMA_NAME> を作成したスキーマの名前に置き換えます。show schemas; ステートメントを実行して、スキーマのリストを表示できます。

  3. 次のステートメントを実行して、Tablestore テーブルのマッピングテーブルを作成します。

    重要

    マッピングテーブルを作成する場合は、次の点に注意してください。

    • マッピングテーブルのカラムのデータ型が Tablestore テーブルのデータ型にマッピングされていることを確認してください。詳細については、「PrtestoDB を使用して Tablestore にアクセスする」トピックの データ型のマッピング セクションを参照してください。

    • マッピングテーブルの名前は、Tablestore テーブルの実際の名前と同じでなければなりません。

    • CREATE TABLE ステートメントの table_name パラメータで指定されたテーブルは、Tablestore の実際のテーブルにマッピングされます。同じ Tablestore テーブルに対して複数のマッピングテーブルを作成できます。

    • マッピングテーブルには、Tablestore テーブルのすべてのプライマリキーカラムが含まれている必要がありますが、特定の属性カラムのみが含まれている必要があります。

    • マッピングテーブルのプライマリキーカラムの名前と順序は、Tablestore テーブルの名前と順序と同じでなければなりません。origin_name パラメータを指定することで、マッピングテーブルの各属性カラムを Tablestore テーブルのカラム名にマッピングできます。

    この例では、gid と uid という名前の 2 つのプライマリキーカラムと col1、col2、col3 という名前の 3 つの属性カラムを含む main_table Tablestore テーブルを使用します。

    次の SQL ステートメントの例は、main_table Tablestore テーブルと同じ名前のマッピングテーブルを作成する方法の例を示しています。

    CREATE TABLE if not exists main_table
    (
       gid bigint,
       uid bigint,
       c1 boolean with (origin_name = 'col1'),
       c2 bigint with (origin_name = 'col2'),
       c3 varchar with (origin_name = 'col3')
    ) WITH (
       table_name = 'main_table'
    );

手順 4: SQL ステートメントを実行してデータに対する操作を実行する

重要

SQL ステートメントを実行してデータに対する操作を実行する前に、use <SCHEMA_NAME>; ステートメントを実行して必要なスキーマを使用していることを確認してください。

SQL ステートメントを実行して、スキーマ設定とマッピングテーブルのメタデータをクエリし、Tablestore テーブルからデータを読み取り、Tablestore テーブルにデータを書き込みます。SQL ステートメントの例については、「Presto サーバーを設定し、サンプル SQL ステートメントを実行する」トピックの「一般的な SQL ステートメントの例」セクションを参照してください Presto サーバーを設定し、サンプル SQL ステートメントを実行する

  1. スキーマ設定をクエリします。

    • スキーマのリストをクエリする

      show schemas;
    • 特定のスキーマのテーブルのリストをクエリする

      show tables;
  2. 特定のテーブルのメタデータをクエリする

    <TABLE_NAME> をテーブルの実際の名前に置き換えます。

    describe <TABLE_NAME>;
  3. データに対する操作を実行します。

    Tablestore データを読み書きします。

    • データを書き込む

      • データの行を挿入する

        次の SQL ステートメントの例は、main_table テーブルにデータの行を挿入する方法の例を示しています。

        insert into main_table values(10001,10001,true,100,'hangzhou');
      • 複数のデータレコードを同時にインポートする

        重要

        複数のデータレコードを同時にインポートする前に、宛先テーブルが作成され、宛先テーブルのスキーマがソーステーブルのスキーマと同じであることを確認してください。

        次の SQL ステートメントの例は、gid カラムの値が 0 より大きく、uid カラムの値が 10000 未満の行の gid、uid、c1、c2、c3 カラムを main_table テーブルから sampletable テーブルにインポートする方法の例を示しています。

        insert into sampletableselect gid, uid, c1, c2, c3 from main_table where gid > 0 and uid < 100000;
    • データを読み取る

      次の SQL ステートメントの例は、sampletable テーブルで gid カラムの値が 0 より大きく、uid カラムの値が 10 未満で、c1 カラムの値が true である行をクエリする方法の例を示しています。

      select * from sampletable where gid > 0 and uid < 10 and c1 = true;

課金

PrestoDB を使用して Tablestore にアクセスする場合、読み取りスループットと書き込みスループットに基づいて Tablestore によって課金されます。詳細については、課金概要 を参照してください。

関連情報

  • MaxCompute、Spark、Function Compute、Realtime Compute for Apache Flink などの他の計算エンジンを使用して、Tablestore テーブルのデータのクエリと分析を行うことができます。詳細については、概要 を参照してください。また、検索インデックスでサポートされている SQL クエリ機能または集計機能を使用して、Tablestore テーブルのデータのクエリと分析を行うこともできます。詳細については、SQL クエリの概要検索インデックスの概要 を参照してください。

  • DataWorks のデータ統合機能を使用して、テーブルまたはインスタンス間で Tablestore データを移行できます。詳細については、Tablestore 内の 1 つのテーブルから別のテーブルにデータを同期する を参照してください。

  • DataV または Grafana を使用して、チャートにデータを表示するなど、データを視覚化できます。詳細については、データの視覚化 を参照してください。