MaxComputeはオープンコンピューティングプラットフォームです。MaxComputeによって生成されたデータをOpenSearch Industry Algorithm Editionにインポートする場合、OpenSearch Industry Algorithm EditionでMaxComputeデータソースをアプリケーションに接続できます。アプリケーションで再インデックスがトリガーされると、OpenSearchはMaxComputeデータソースのテーブルから自動的にフルデータを取得します。MaxComputeデータソースから増分データを取得するには、OpenSearchのAPIまたはSDKを使用する必要があります。
Alibaba CloudアカウントのAccessKeyペアの設定
OpenSearch Industry Algorithm EditionでMaxComputeデータソースを設定すると、OpenSearch Industry Algorithm Editionは入力したAccessKeyペアを使用してMaxComputeテーブルからデータをダウンロードします。そのため、MaxComputeデータソースを設定する前に、アカウントのAccessKeyペアを設定する必要があります。
OpenSearchコンソールにログインするために使用するAlibaba Cloudアカウント内にMaxComputeプロジェクトが作成されていることを確認してください。
Alibaba CloudアカウントのAccessKeyペアを使用して、Alibaba Cloudアカウント内に作成されたMaxComputeプロジェクトのテーブルにアクセスできます。
セキュリティリスクを軽減するために、Resource Access Management(RAM)ユーザーのAccessKeyペアを使用できます。RAMユーザーを作成し、RAMユーザーに権限を付与するには、次の手順を実行します。
Alibaba Cloudアカウント内にRAMユーザーを作成します。詳細については、RAMユーザーの作成と承認を参照してください。
MaxComputeコンソールにログインし、RAMユーザーのメンバーを追加します。
要件に基づいて、追加されたメンバーにロールを割り当てます。
DataStudioページで
list users;
コマンドを実行して、追加されたメンバーが属するアカウントを表示します。詳細については、DataWorksを参照してください。
アカウント名をコピーし、アカウントに権限を付与します。xxxは手順3で取得したアカウントを示します。
-- 1. プロジェクトに対するLIST権限を付与します。
grant CreateInstance,List on project zy_ts_test to user xxx;
-- 2. MaxComputeテーブルに対するSELECT、DESCRIBE、およびDOWNLOAD権限を付与します。
GRANT select,describe,download ON TABLE people_info TO USER xxx;
-- 3. オプション。MaxComputeテーブルにラベルベースの権限を付与します。
set label 2 to USER xxx;
-- 特定のユーザーの権限と、ユーザーに割り当てられているロールに関する情報を照会します。
show grants for xxx;
RAMユーザーを作成し、RAMユーザーに権限を付与したら、OpenSearch Industry Algorithm EditionコンソールでMaxComputeデータソースを設定できます。
MaxComputeデータソースの設定
アプリケーションの設定ページで、アプリケーションスキーマ作成方法セクションのデータソースの使用をクリックします。
データソースの選択パネルで、データソースとしてMaxComputeを選択します。
データベースに接続をクリックします。データベースに接続ダイアログボックスで、プロジェクト名、AccessKey ID、およびAccessKey Secretパラメーターを設定します。
接続をクリックします。次に、設定する1つ以上のテーブルを選択します。
システムは対応するフィールドを自動的にマッピングします。ビジネス要件に基づいてフィールドを微調整できます。次へをクリックします。
アプリケーションスキーマを設定する場合は、プライマリテーブルと一意のプライマリキーフィールドを各テーブルに作成する必要があります。
インデックススキーマを設定します。検索要件に基づいて適切なアナライザーを選択できます。詳細については、インデックススキーマを参照してください。次に、次へをクリックします。
データソースを設定します。この手順では、フィールドマッピング、パーティション情報、およびデータ同期のための同時実行制御を設定できます。
5.1. フィールドマッピングの設定:アクション列の編集をクリックします。OpenSearch Industry Algorithm Editionは、MaxComputeデータ用に複数のデータソースプラグインを提供しています。プラグインを使用する必要がある場合は、フィールドマッピングを設定するときに、コンテンツ変換列のプラス記号(+)をクリックします。このようにして、ソースフィールドはOpenSearch Industry Algorithm Editionに同期される前に変換されます。設定エラーや接続障害などのエラーによりプラグインが機能しない場合、ソースフィールドは変換されずに宛先フィールドに同期されます。
プラグインを設定します。
次のタイプのMaxComputeデータがサポートされています:BIGINT、DOUBLE、BOOLEAN、DATETIME、STRING、およびDECIMAL。
システムは、MaxComputeテーブルのDATETIME型のデータをミリ秒に自動的に変換します。対応するOpenSearch Industry Algorithm Editionフィールドのデータ型をINTに設定する必要があります。
5.2 パーティション情報の構成:OpenSearch Industry Algorithmでは、MaxComputeデータの特性に基づいてインポートするデータのパーティションを指定できます。正規表現がサポートされています。インスタンスの詳細ページで再インデックスをクリックして、スケジュールされた再インデックスタスクを作成できます。このようにして、増分パーティションデータを毎日インポートできます。
正規表現:等号(=)、カンマ(、)、セミコロン(;)、および二重縦棒(||)はシステムの予約文字です。たとえば、ds=%Y%m%d || -1 daysは、前日の指定されたパーティションのフルデータの自動インポートを指定します。
dsはパーティションフィールドの名前を指定します。等号(=)の両側にスペースなどの見えない文字は使用できません。
次のセクションでは、MaxComputeのパーティション条件を設定する方法について説明します。
1:セミコロン(;)で区切ることで、複数のパーティションフィルタールールを指定できます。たとえば、pt=1;pt=2は、パーティションフィルタールールpt=1またはpt=2を満たすすべてのパーティションに一致します。
2:カンマ(、)で区切ることで、パーティションフィルタールールに複数のパーティションフィールドを設定できます。たとえば、pt1=1,pt2=2,pt3=3は、すべてのパーティションフィルター条件pt1=1、pt2=2、およびpt3=3を満たすすべてのパーティションに一致します。%Y%m%d || -1 daysなどの関数は複数のパーティションフィールドをサポートしていませんが、単一のパーティションフィールドをサポートしています。
例:MaxComputeテーブルのptパーティションには、ds子パーティションが含まれています。
複数のパーティションを指定する:pt=1;pt=2は、pt=1およびpt=2パーティションのすべてのデータの同期を指定します。
複数のパーティションフィールドを設定する:pt=1,ds=1は、pt=1パーティションのds=1子パーティションのデータの同期を指定します。
pt=1,ds=%Y%m%d || -1 daysまたはpt=1;pt=%Y%m%d || -1 daysはサポートされていません。
3:パーティションフィールドの値はアスタリスク(*)にすることができ、これはパーティションフィールドの値が任意の値になることを示します。この場合、このフィールドはフィルタールールではオプションです。
4:パーティションフィールドの値に正規表現を含めることができます。たとえば、pt=[0-9]*は、pt値が数値であるすべてのパーティションに一致します。
5:パーティションフィールドの値は時間照合をサポートしています。フィルタールールは次の形式です。pt=フォーマットされた時間を含むパーティションフィールド値||時間間隔式。たとえば、ds=%Y%m%d || -1 daysは、パーティションフィールドがdsであり、フォーマットされた時間が20150510であり、前日のデータが必要であることを示します。
5.1 フォーマットされた時間パラメーターは、標準の時間形式パラメーターにすることができます。
5.2 時間間隔式は、次の形式にすることができます。+/- n week|weeks|day|days|hour|hours|minute|minutes|second|seconds|microsecond|microseconds。プラス記号(+)は、スケジュールされた再インデックスタスクが作成されてからN週間、N日、N時間、N分、N秒、またはNミリ秒後を示します。マイナス記号(-)は、スケジュールされた再インデックスタスクが作成される前のN週間、N日、N時間、N分、N秒、またはNミリ秒前を示します。
5.3 デフォルトでは、システムは+0 days条件を使用してすべてのフィルタールールの時間パラメーターを変換します。したがって、フィルタリングに使用されるフィールド値には、次の文字列を通常の文字列パラメーターとして含めることはできません。たとえば、水曜日に作成されたタスクの場合、pt=%abcは、pt値が%abcではなくWedbcであるパーティションに一致します。
次のリストは、正規表現に含めることができるすべてのパラメーターを示しています。
%d: 月の日付のシーケンス番号。
%H: 24時間制の時間。有効な値:[0, 23]。
%m: 年の月のシーケンス番号。有効な値:[01, 12]。
%M: 分。有効な値:[00, 59]。
%S: 秒。有効な値:[00, 61]。
%y: 2桁で表される年。
%Y: 4桁で表される年。
5.3. データ同期のための同時実行制御の設定:
DONEファイルの使用を選択すると、DONEファイルをアップロードして、OpenSearchがフルデータをプルするタイミングを制御できます。これにより、データの整合性が確保されます。OpenSearchがMaxComputeからフルデータをプルする前に、OpenSearchは当日のDONEファイルが存在するかどうかを確認します。ファイルが存在しない場合、OpenSearchはDONEファイルが表示されるまで待機します。デフォルトのタイムアウト期間は1時間です。
MaxComputeの公式WebサイトからMaxComputeクライアントのインストールパッケージをダウンロードする必要があります。パッケージのファイル名はodps_clt_release_64.tar.gzです。
必要なMaxComputeプロジェクトに対するCreateResource権限が必要です。
MaxComputeクライアントをインストールした後、MaxComputeクライアントで次のコマンドを実行します。DONEファイルの名前は$prefix_%Y-%m-%d形式です。$prefixはDONEファイルの名前のプレフィックスを指定します。デフォルトでは、DONEファイルの名前のプレフィックスはテーブル名です。%Y-%m-%dはスケジュールされた再インデックスタスクの日付を指定します。スケジュールされた再インデックスタスクの最小間隔は1日です。
odpscmd -u accessid -p accesskey --project=<prj_name>-e "add file <done file>;"
MaxComputeクライアントの使用方法の詳細については、MaxComputeクライアント(odpscmd)を参照してください。
DONEファイルの内容はJSON形式です。DONEファイルには、現在のフルデータのミリ秒単位のタイムスタンプのみを含める必要があります。システムは過去3日間の増分データのみを保持します。したがって、タイムスタンプで指定された時点は過去3日以内である必要があります。
DONEファイルのタイムスタンプは、プルする増分データの時点を示します。タイムスタンプを指定しない場合、スケジュールされた再インデックスタスクの開始時刻からの増分データが追加されます。OpenSearchは過去3日間の増分データのみを保持します。したがって、時点は過去3日以内である必要があります。
たとえば、フルデータは当日の09:00に生成され、MaxComputeは10:00にフルデータを処理し、OpenSearchのスケジュールされた再インデックスタスクは10:30に開始されます。MaxComputeがフルデータを処理した後、当日の09:00以降の増分データが追加されます。データの整合性を確保するために、DONEファイルに当日の09:00に対応するタイムスタンプをミリ秒単位で指定する必要があります。そうしないと、スケジュールされた再インデックスタスクのデフォルトの開始時刻である10:30以降に生成された増分データが追加されます。09:00から10:30までの増分データは失われます。注意して進めてください。増分データが生成されない場合は、タイムスタンプを指定する必要はありません。
次のサンプルコードは、高度なアプリケーションのDONEファイルの内容の例を示しています。DONEファイルのタイムスタンプは、増分データを追加するために使用されます。同様の方法を使用して、標準アプリケーションのDONEファイルにタイムスタンプを指定できます。
{
"timestamp":"1234567890000"
}
DONEファイルとデータ時間の優先順位:
MaxComputeデータソースのデータ時間は必須であり、DONEファイルよりも優先されます。
アプリケーションに1つのバージョンのみを作成する場合は、データ時間のみを指定する必要があります。この場合、DONEファイルだけを使用することはできません。
スケジュールされた再インデックスタスクを使用する必要がある場合は、データ時間とDONEファイルの両方を指定する必要があります。最初のバージョンでは、データ時間はDONEファイルよりも優先されます。後続のバージョンでは、DONEファイルはデータ時間よりも優先されます。
使用上の注意:
MaxComputeデータソースはフル同期のみをサポートし、増分同期はサポートしていません。