このトピックでは、MaxCompute データソースの設定方法について説明します。
前提条件
-
MaxCompute(旧称 ODPS)の基本的な理解があること。MaxCompute が初めての場合は、こちらで詳細をご確認ください。
-
必要なテーブル権限を保有していること。MaxCompute テーブルにアクセスするアカウントには、対象テーブルに対する
describe、select、およびdownload権限と、フィールドのラベル権限が必要です。
以下の文を使用して権限を付与します。
-- ユーザーを追加します。
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 ではフィールドレベルの権限が必要です。高権限フィールドを含むすべてのフィールドに対してこれらの権限を付与しない場合、インデックスビルドが失敗します。
-- Project 内のすべてのテーブルに権限を付与します。
SET LABEL 3 to USER ****@aliyun.com
-- 特定のテーブルに権限を付与します。
GRANT LABEL 3 ON TABLE table_xxx(col1, col2) TO ****@aliyun.com
-
OpenSearch Vector Search Edition は、MaxCompute テーブルの以下のフィールドタイプをサポートしています:STRING、BOOLEAN、DOUBLE、BIGINT、DATETIME。
CREATE TABLE 文およびパラメーター構成の詳細については、「MaxCompute データソースの CREATE TABLE 文」をご参照ください。
MaxCompute データソースの設定
1. OpenSearch コンソールにログインします。左上隅で OpenSearch Vector Search Edition を選択します。インスタンス管理 ページでご利用のインスタンスを見つけ、[操作] 列の [管理] をクリックします。
-
2. 左側のナビゲーションウィンドウで、[構成センター] > [データソース構成] を選択します。[データソースの追加] をクリックし、MaxCompute を選択して、次のパラメーターを設定します:データソース名、Project、AccessKey ID、AccessKey Secret、テーブル、パーティションキー、自動インデックス再構築。
3. パラメーターを設定後、[検証] をクリックします。検証が成功すると、[OK] ボタンがクリック可能になります。
4. データソースを追加後、インデックススキーマを構成し、インデックステーブルを追加する必要があります。詳細については、「インデックステーブルの追加」をご参照ください。
5. インデックステーブルの構成後、構成更新を適用し、インデックスを再構築して本番クラスターで利用可能にする必要があります。詳細については、「構成の更新」をご参照ください。
注:
-
データソース名:データソースの名前。名前は
instance_name_custom_name形式に従う必要があります。 -
Project、AccessKey ID、AccessKey Secret、テーブル、パーティションキー:MaxCompute データソースにアクセスするために必要なパラメーター。
-
自動インデックス再構築:有効にすると、データソースが変更された際に、そのデータソースを参照するすべてのインデックステーブルのインデックスが自動的に再構築されます。
-
自動インデックス再構築を有効にする場合、
done tableを作成する必要があります。詳細については、「自動インデックス再構築」をご参照ください。
自動インデックス再構築
done table の目的:データソースの自動インデックス再構築を有効にすると、ご利用の OpenSearch Vector Search Edition インスタンスは done table をモニターし、done table が更新されるたびにインデックス再構築をトリガーします。
例:パーティションキー ds=20220113 でパーティション化された mytable という名前の MaxCompute データテーブルがあるとします。初期インデックスビルド後、毎日新しいパーティションがフルロードとして生成されると仮定します。このとき、OpenSearch Vector Search Edition インスタンスに新しいパーティションを検出し、自動的にインデックス再構築をトリガーさせて新しいデータをプルさせたい場合、done table を使用した自動インデックス再構築が必要です。
手順:
1. データソースを追加する際、自動インデックス再構築 を有効にします。
2. MaxCompute に done table を作成します。データテーブル名が mytable でパーティションキーが ds の場合、done table の名前は mytable_done とし、パーティションキーも ds とする必要があります。MaxCompute 上での両テーブルの表示は次のとおりです:
odps:sql:xxx> show tables;
InstanceId: xxx
SQL: .
ALIYUN$****@aliyun.com:mytable # フルロード用のデータテーブル
ALIYUN$****@aliyun.com:mytable_done # 自動フルロードをトリガーする done table
done table の作成文:
create table mytable_done (attribute string) partitioned by (ds string);
3. mytable テーブルに新しいパーティション ds=20220114 のデータが生成された後、done table を更新して OpenSearch Vector Search 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}';
done table の最終的な内容は次のとおりです:
odps:sql:xxx> select * from mytable_done where ds=20220114 limit 1;
InstanceId: xxx
SQL: .
+-----------+----+
| attribute | ds |
+-----------+----+
| {"swift_start_timestamp":1642003200} | 20220114 |
+-----------+----+
信号データが done table に挿入されると、OpenSearch Vector Search Edition インスタンスがその信号を検出し、自動的にインデックス再構築をトリガーします。
-
done tableには少なくとも 1 つのパーティションキーが必要であり、そのパーティションキーの名前はデータテーブルのパーティションキーと同じである必要があります。たとえば、データテーブルのパーティションキーがdsの場合、done tableのパーティションキーもdsである必要があります。 -
done tableには、attributeという名前の STRING 型フィールドが 1 つ含まれている必要があります。 -
done tableに追加するパーティションは、すでにデータテーブルに存在している必要があります。たとえば、データテーブルにds="20220114"、ds="20220115"、ds="20220116"のパーティションが存在する場合、done tableに追加する新しいパーティションは、これらの既存パーティションのいずれかである必要があります。 -
done tableにデータを挿入する際、attributeフィールドの値は{"swift_start_timestamp":1642003200}のような JSON 形式の文字列である必要があります。タイムスタンプは、増分データ取り込みの開始ポイントを指定します。
MaxCompute データソースの編集
-
データソース構成 ページで、編集したいデータソースを見つけ、[操作] 列の [変更] をクリックします。
-
データソースの編集 ページで、Project、AccessKey ID、AccessKey Secret、テーブル、パーティションキー などのパラメーターを変更します。
パラメーターを変更後、[検証] をクリックします。検証が成功したら、[OK] をクリックして変更を保存します。
-
データソースを変更後、構成更新を適用し、インデックスを再構築して本番クラスターで変更を有効にする必要があります。詳細については、「構成の更新」をご参照ください。
1 日に複数回のフルロードを許可するため、パーティション粒度を時間単位(例:yyyyMMddHH、2022011314 など)に設定してください。
MaxCompute データソースの削除
-
1. データソース構成 ページで、削除したいデータソースを見つけ、[操作] 列の [削除] をクリックします。
-
2. [削除] をクリックすると、システムはそのデータソースがインデックステーブルから参照されているかどうかをチェックします。
-
データソースがどのインデックステーブルからも参照されていない場合、[OK] をクリックして削除します。
-
データソースがインデックステーブルから参照されている場合、エラーが報告されます。
システムは次のメッセージを表示します:「データソースはインデックステーブルから参照されています。インデックステーブルを削除するか関連付けを解除してから、データソースを削除してください。」
データソースを削除する前に、そのデータソースを参照するすべてのインデックステーブルを先に削除する必要があります。詳細については、「インデックステーブルの削除」をご参照ください。
注意事項
-
データソースの作成後に名前を変更することはできません。
-
MaxCompute は外部テーブルをサポートしていません。内部テーブルを使用する必要があります。
-
MaxCompute データソースとして構成するテーブルは、パーティションテーブルである必要があります。
-
MaxCompute で生成されたテーブルをフルロードに使用し、API データソースを使用してリアルタイムデータをプッシュできます。