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

OpenSearch:MaxComputeデータソース

最終更新日:Dec 28, 2024

前提条件

  • 旧称ODPSであるMaxComputeについて理解していること。MaxComputeの詳細については、MaxComputeとは を参照してください。

  • OpenSearch Retrieval Engine Editionコンソールへのログオンに使用するアカウントには、構成するMaxComputeテーブルに対する次の権限が付与されていること。テーブルに対するDESCRIBE、SELECT、およびDOWNLOAD権限、テーブルのフィールドに対するLABEL権限。

次のステートメントを実行して、必要な権限をアカウントに付与できます。

-- アカウントを追加します。
add user ****@aliyun.com;

-- 必要な権限をアカウントに付与します。
GRANT describe,select,download ON TABLE table_xxx TO USER ****@aliyun.com
GRANT describe,select,download ON TABLE table_xxx_done TO USER ****@aliyun.com

-- MaxComputeテーブルのフィールド権限検証を有効にすると、データのプル時に権限の高いフィールドへのアクセスがシステムによって防止され、テーブルのインデックスを作成できません。この場合、すべてのフィールドにアクセスするための権限をアカウントに付与する必要があります。
-- プロジェクト全体に対する権限を付与します。
SET LABEL 3 to USER ****@aliyun.com

-- 単一のテーブルに対する権限を付与します。
GRANT LABEL 3 ON TABLE table_xxx(col1, col2) TO ****@aliyun.com
  • MaxComputeテーブルに含まれるフィールドは、STRING、BOOLEAN、DOUBLE、BIGINT、およびDATETIMEのデータ型です。

説明

テーブル作成ステートメントとMaxComputeデータソースを追加するためのパラメータの詳細については、MaxComputeデータソースにテーブルを作成するためのCREATE TABLEステートメントを参照してください。

MaxComputeデータソースを構成する

1. OpenSearchコンソールにログオンします。左上隅で、OpenSearch Retrieval Engine Editionを選択します。「インスタンス」ページで、管理するインスタンスを見つけ、「アクション」列の「管理」をクリックします。

  1. 左側のナビゲーションペインで、構成センター > データソースを選択します。データソースの追加をクリックします。表示されるパネルで、データソースの種類としてMaxComputeを選択し、データソース名、プロジェクト、アクセスキー、アクセスキーシークレット、テーブル、パーティションキー、自動再インデックスなどのパラメータを構成します。

3. パラメータが構成されたら、「検証」をクリックします。構成が検証に合格したら、「OK」をクリックします。

4. データソースが作成されたら、インデックススキーマを構成して、データソースのインデックステーブルを作成します。詳細については、「インデックススキーマ」トピックのインデックステーブルの追加セクションを参照してください。

5. インデックステーブルが構成されたら、データソースの構成を更新し、再インデックスをトリガーして、データソースをオンラインクラスタで使用できるようにします。詳細については、構成の更新を参照してください。

パラメータの説明

  • データソース名:データソースの名前。InstanceName_CustomName形式で名前を指定します。

  • プロジェクト、アクセスキー、アクセスキーシークレット、テーブル、パーティションキー:MaxComputeデータソースへの接続に必要なパラメータ。

  • 自動再インデックス:自動再インデックス機能を有効にするかどうかを指定します。自動再インデックス機能が有効になっている場合、システムはデータソースのデータ変更を検出するたびに、データソースを参照するインデックステーブルのインデックスを自動的に再構築します。

  • 自動再インデックスを有効にする場合は、完了テーブルを作成する必要があります。詳細については、このトピックの自動再インデックスの構成セクションを参照してください。

自動再インデックスを構成する

完了テーブルの説明:データソースを構成するときに自動再インデックスを有効にすると、OpenSearch Retrieval Engine Editionは完了テーブルの変更に基づいてインデックスを自動的に再構築します。

:MaxComputeデータソースを構成するときに、MaxComputeテーブルとしてmytableを指定し、パーティションとしてds=20220113を指定します。データソースの再インデックスを初めて構成した後、システムは毎日新しいパーティションを生成します。各新しいパーティションには、テーブルの全データが含まれています。新しいパーティションが生成されるたびに、OpenSearch Retrieval Engine Editionは新しいパーティションをスキャンし、新しいパーティションのデータに基づいてインデックスを自動的に再構築する必要があります。この要件を満たすために、自動再インデックス機能と完了テーブルを使用できます。

手順

1. データソースを作成するときに自動再インデックスを有効にします。

2. MaxComputeで対応する完了テーブルを構成します。データテーブルの名前がmytableで、データテーブルのパーティションキーの名前がdsの場合、完了テーブルの名前はmytable_doneで、完了テーブルのパーティションキーの名前はdsです。次のサンプルコードは、2つのテーブルがMaxComputeにどのように表示されるかを示しています。

odps:sql:xxx> show tables;
InstanceId: xxx  
SQL: .                                                                                              

ALIYUN$****@aliyun.com:mytable          # データソースの全データを格納するテーブル。
ALIYUN$****@aliyun.com:mytable_done     # ソーステーブルの全データが自動的に同期される完了テーブル。

次の図は、完了テーブルを示しています。

次のステートメントを実行して、完了テーブルを作成できます。

create table mytable_done (attribute string) partitioned by (ds string);

3. mytableテーブルのds=20220114パーティションが生成されたら、完了テーブルを構成して、OpenSearch Retrieval Engine Editionにインデックスの再構築をトリガーさせます。

-- パーティションを追加します。
alter table mytable_done add if not exists partition (ds="20220114");

-- セマフォを挿入して、自動フルデータ同期を有効にします。
insert into table mytable_done partition (ds="20220114") select '{"swift_start_timestamp":1642003200}';

完了テーブルには次の内容が含まれています。

odps:sql:xxx> select * from mytable_done where ds=20220114 limit 1;
InstanceId: xxx  
SQL: .                                                                                              
+-----------+----+
| attribute | ds |
+-----------+----+
| {"swift_start_timestamp":1642003200} | 20220114 |
+-----------+----+

自動フルデータ同期のセマフォが完了テーブルに挿入されると、OpenSearch Retrieval Engine Editionは完了テーブルのセマフォをスキャンし、自動的に再インデックスタスクをトリガーします。

重要

  • 完了テーブルには少なくとも1つのパーティションキーを指定してください。完了テーブルのパーティションキーの名前は、MaxComputeテーブルのパーティションキーの名前と同じである必要があります。MaxComputeテーブルのパーティションキーがdsの場合、完了テーブルのパーティションキーはdsに設定する必要があります。

  • 完了テーブルには、STRING型のフィールドが1つだけ含まれています。フィールド名はattributeである必要があります。

  • 完了テーブルに追加するパーティションは、MaxComputeテーブルに存在する必要があります。たとえば、MaxComputeテーブルにds=20220114、ds=20220115、ds=20220116パーティションが含まれている場合、完了テーブルに追加するパーティションを3つのパーティションから選択する必要があります。

  • 完了テーブルにデータを挿入するときは、attributeフィールドの値はJSON文字列(例:{"swift_start_timestamp":1642003200})である必要があります。タイムスタンプは、リアルタイムの増分同期の開始オフセットを指定します。

MaxComputeデータソースを変更する

  1. 「データソース」ページで、変更するデータソースを見つけ、「アクション」列の「変更」をクリックします。

  1. データソースの変更パネルで、プロジェクト、アクセスキー、アクセスキーシークレット、テーブル、パーティションキーなどのパラメータを変更します。

「検証」をクリックします。変更された構成が検証に合格したら、「OK」をクリックして変更を保存します。

  1. データソースが変更されたら、データソースの構成を更新し、再インデックスをトリガーして、データソースをオンラインクラスタで使用できるようにします。詳細については、構成の更新を参照してください。

説明

2022011314などのyyyymmddhh形式の時間別パーティションを指定することをお勧めします。こうすることで、データソースに対して毎日複数のフルインデックスタスクをトリガーできます。

MaxComputeデータソースを削除する

  1. データソースページで、削除するデータソースを見つけ、アクション列の削除をクリックします。

  1. 「削除」をクリックすると、システムはデータソースがインデックステーブルによって参照されているかどうかを確認します。

  • データソースがインデックステーブルによって参照されていない場合は、「OK」をクリックしてデータソースを削除します。次に、データソースの構成を更新し、インデックスを再構築して、データソースが削除されていることを確認します。

  • データソースがインデックステーブルによって参照されている場合、システムは「削除」をクリックした後に次のエラーを返します。

データソースを削除する前に、データソースを参照するインデックステーブルを削除する必要があります。詳細については、「インデックススキーマ」トピックのインデックステーブルの削除セクションを参照してください。

使用上の注意

  • データソースを変更するときは、データソースの名前を変更することはできません。

  • MaxComputeは外部テーブルをサポートしていません。内部テーブルを作成する必要があります。

  • MaxComputeデータソースを追加するときに指定するMaxComputeテーブルは、パーティションテーブルである必要があります。

  • MaxComputeテーブルの全データをデータソースとして使用して、OpenSearch Retrieval Engine Editionでインデックスを構築し、APIデータソースを使用して増分データをリアルタイムで同期できます。