本文將介紹以MaxCompute為資料來源時如何添加表。
前置條件
瞭解MaxCompute ,如果您對MaxCompute 沒有過多的瞭解,可什麼是MaxCompute進行參考;
表許可權,在配置MaxCompute 資料表時需要登入OpenSearch的帳號對該表有相應的許可權(describe,select,download,欄位的label許可權),賦權語句如下:
-- 添加帳號
add user ****@aliyun.com;
-- 給該帳號賦相應的表許可權
GRANT describe,select,download ON TABLE table_xxx TO USER ****@aliyun.com
-- 由於ODPS開啟了欄位許可權校正,導致拉取資料的時候無法訪問高許可權的欄位,表索引build不出來,碰到這種情況需要授權給帳號欄位層級的存取權限。
-- 給整個Project統一授權
SET LABEL 3 to USER bs*******@aliyun.com
-- 給單表授權
GRANT LABEL 3 ON TABLE table_xxx(col1, col2) TO ****@aliyun.com召回引擎版支援的MaxCompute 表欄位類型有:STRING 、BOOLEAN、DOUBLE、BIGINT、DATETIME;
配置MaxCompute 資料來源
1、進入OpenSearch控制台,在左上方切換到OpenSearch-召回引擎版,在執行個體管理頁面對應的列表中找到所屬執行個體,點擊操作欄中的管理:

點擊‘去配置’按鈕,開始執行個體配置。
2、表管理介面開始配置表基礎資訊,填寫表名稱,分區數和資料更新資源數:

配置說明:
表名稱:可自訂,不支援使用project.tablename。
資料分區數:分區數設定時,各索引表分區數需保持一致;或至少一個索引表分區數為1,其餘索引表分區數一致,表分區不超過256的正整數即可(建議不超過執行個體資料節點數的3倍)。
資料更新資源數:資料更新所用資源數,每個索引預設免費提供2個4核8G的更新資源,超出免費額度的資源將產生費用,詳情可參考召回引擎版計費概述。
3、資料同步,配置資料來源,校正通過後,點擊下一步:

配置參數說明:
全量資料來源:選擇MaxCompute+API
Project:訪問的目標MaxCompute專案名稱
accesskeyId:阿里雲帳號或RAM使用者的AccessKey ID
accesskeySecret:AccessKey ID對應的AccessKey Secret
Table:訪問的目標MaxCompute表名
分組鍵partition:MaxCompute資料來源必須設定分區鍵; 樣本:ds=20170626
自動索引重建:是否開啟自動索引重建任務,如果開啟,則將在識別到當前資料來源的變更時,自動對引用該資料來源的索引表進行索引重建
開啟自動索引重建,則必須建立done表,建立方式,可參考下方自動索引重建;
4、欄位配置,配置完成後,點擊下一步:
5、索引配置,配置完成後,點擊下一步:
6、確認建立,點擊確認建立後,系統將自動建立配置好的表:

7、可在變更歷史中查看建立表的進度:

注意:
全量資料來源:使用者的資料來源,命名規則為執行個體名稱_使用者自訂名稱;
Project、accesskeyId、accesskeySecret、Table、分組鍵partition:使用者訪問MaxCompute資料來源所需要的參數;
自動索引重建:是否開啟自動索引重建任務,如果開啟,則將在識別到當前資料來源的變更時,自動對引用該資料來源的索引表進行索引重建;
開啟自動索引重建,則必須建立done表,建立方式,可參考下方自動索引重建;
自動索引重建
當使用者在配置資料來源開啟自動索引重建時,表示召回引擎版執行個體會根據使用者的done表變動去自動索引重建。
舉例:假設使用者的MaxCompute 資料表mytable,分區為ds=20220113,第一次配置資料來源索引重建之後,以後每天產出一個新分區(分區資料是表的全量資料),需要召回引擎版執行個體掃描到新分區然後自動進行索引重建拉取新分區資料,此時就需要:自動索引重建+done表 實現此功能,操作步驟如下:
添加資料來源時候,開啟自動索引重建:

在MaxCompute 設定done 表,假設源表名為mytable,分區鍵名稱為ds,那麼done表表名為mytable_done,分區鍵名稱為ds,兩張表在MaxCompute 顯示為:
odps:sql:xxx> show tables;
InstanceId: xxx
SQL: .
ALIYUN$xxx@aliyun.com:mytable #全量資料來源的表
ALIYUN$xxx@aliyun.com:mytable_done #控制自動全量的done表done 表的示意圖:

建立done表語句:
create table mytable_done (attribute string) partitioned by (ds string);當mytable表分區ds=20220114 資料完成產出後,需要設定done表,以觸發召回引擎版執行個體的索引重建;
-- 添加分區
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表內容如下所示:
odps:sql:xxx> select * from mytable_done where ds=20220114 limit 1;
InstanceId: xxx
SQL: .
+-----------+----+
| attribute | ds |
+-----------+----+
| {"swift_start_timestamp":1642003200} | 20220114 |
+-----------+----+最終當done表插入自動全量訊號資料後,召回引擎版執行個體會掃描done的訊號,然後自動觸發索引重建。
注意:
要求done表至少有一個分區鍵,並且分區鍵名稱必須與源表的分區鍵名稱一致;
done表添加的分區必須是源表中存在的分區,若源表的分區有、ds="20220114"、ds="20220115"、ds="20220116",那麼done表新加的分區也必須在源表分區範圍內;
注意事項
建立表時,MaxCompute的table名稱不可帶有project名稱,否則會導致build時識別不了表名報錯。
編輯表時,不可修改表名稱;
MaxCompute的資料來源所配置的表需要是有分區的表;
使用者在MaxCompute上產出的表作為全量輸入,使用API資料來源推送即時資料;