MaxCompute數(shù)據(jù)源
前置條件
了解MaxCompute(原ODPS) ,如果您對MaxCompute 沒有過多的了解,可點擊此處進行參考。
表權限,在配置MaxCompute 數(shù)據(jù)表時需要登錄OpenSearch的賬號對該表有相應的權限(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開啟了字段權限校驗,導致拉取數(shù)據(jù)的時候無法訪問高權限的字段,表索引build不出來,碰到這種情況需要授權給賬號字段級別的訪問權限。
-- 給整個Project統(tǒng)一授權
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;
詳細的建表語句說明和參數(shù)配置可參考MaxCompute數(shù)據(jù)源建表語句說明
配置MaxCompute 數(shù)據(jù)源
1. 進入OpenSearch控制臺,在左上角切換到OpenSearch-召回引擎版,在實例管理頁面對應的列表中找到所屬實例,點擊操作欄中的管理:
在配置中心>數(shù)據(jù)源配置界面,點擊添加數(shù)據(jù)源,在添加數(shù)據(jù)源時選擇MaxCompute,填寫紅框中數(shù)據(jù)源名稱、Project、accesskeyId、accesskeySecret、Table、分組鍵partition、自動索引重建等信息:
3. 配置完成后,點擊校驗后,校驗通過后,確定按鈕可點擊:
4. 新添加數(shù)據(jù)源后,需要配置索引結構為其添加索引表,詳情可參考添加索引表;
5. 索引表配置完成后,需要更新配置并索引重建才可供線上集群使用,詳情可參考配置更新;
注意:
數(shù)據(jù)源名稱:用戶創(chuàng)建的數(shù)據(jù)源名稱,命名規(guī)則為實例名稱_用戶自定義名稱;
Project、accesskeyId、accesskeySecret、Table、分組鍵partition:用戶訪問MaxCompute數(shù)據(jù)源所需要的參數(shù);
自動索引重建:是否開啟自動索引重建任務,如果開啟,則將在識別到當前數(shù)據(jù)源的變更時,自動對引用該數(shù)據(jù)源的索引表進行索引重建;
開啟自動索引重建,則必須創(chuàng)建done表,創(chuàng)建方式,可參考下方自動索引重建;
自動索引重建
done 表的作用:當用戶在配置數(shù)據(jù)源開啟自動索引重建時,表示召回引擎版實例會根據(jù)用戶的done表變動去自動索引重建。
舉例:假設用戶的MaxCompute 數(shù)據(jù)表mytable,分區(qū)為ds=20220113,首次配置數(shù)據(jù)源索引重建之后,以后每天產(chǎn)出一個新分區(qū)(新分區(qū)數(shù)據(jù)是表的全量數(shù)據(jù)),需要召回引擎版實例掃描到新分區(qū)然后自動進行索引重建拉取新分區(qū)數(shù)據(jù),此時就需要:自動索引重建+done表 實現(xiàn)此功能。
操作步驟如下:
1.添加數(shù)據(jù)源的時候,開啟自動索引重建:
2.在MaxCompute 設置done 表,假設數(shù)據(jù)表名為mytable,分區(qū)鍵名稱為ds,那么done表表名為mytable_done,分區(qū)鍵名稱為ds,兩張表在MaxCompute 顯示為:
odps:sql:xxx> show tables;
InstanceId: xxx
SQL: .
ALIYUN$****@aliyun.com:mytable #全量數(shù)據(jù)源的表
ALIYUN$****@aliyun.com:mytable_done #控制自動全量的done表
done 表的示意圖:
創(chuàng)建done表語句:
create table mytable_done (attribute string) partitioned by (ds string);
3.當數(shù)據(jù)表mytable分區(qū)ds=20220114 數(shù)據(jù)完成產(chǎn)出后,需要設置done表,以觸發(fā)召回引擎版實例的索引重建;
-- 添加分區(qū)
alter table mytable_done add if not exists partition (ds="20220114");
-- 插入自動全量信號數(shù)據(jù)
insert into table mytable_done partition (ds="20220114") select '{"swift_start_timestamp":1642003200}';
最終done表內(nèi)容如下所示:
odps:sql:xxx> select * from mytable_done where ds=20220114 limit 1;
InstanceId: xxx
SQL: .
+-----------+----+
| attribute | ds |
+-----------+----+
| {"swift_start_timestamp":1642003200} | 20220114 |
+-----------+----+
最終當done表插入自動全量信號數(shù)據(jù)后,召回引擎版實例會掃描done的信號,然后自動觸發(fā)索引重建。
要求done表至少有一個分區(qū)鍵,并且分區(qū)鍵名稱必須與數(shù)據(jù)表的分區(qū)鍵名稱一致,若數(shù)據(jù)表的分區(qū)鍵為ds,那么done表的分區(qū)鍵也需要設置為ds;
done表只有一個string類型的字段,字段名必須為“attribute”;
done表添加的分區(qū)必須是數(shù)據(jù)表中存在的分區(qū),若數(shù)據(jù)表的分區(qū)有、ds="20220114"、ds="20220115"、ds="20220116",那么done表新加的分區(qū)也必須在數(shù)據(jù)表分區(qū)范圍內(nèi);
done表在插入數(shù)據(jù)時,attribute字段值為字符串類型的JSON串,如
{"swift_start_timestamp":1642003200}
該時間戳表示追實時增量的開始位點;
編輯MaxCompute 數(shù)據(jù)源
在數(shù)據(jù)源配置界面,找到對應的數(shù)據(jù)源,點擊右側操作欄中的“修改”按鈕:
進入編輯數(shù)據(jù)源頁面對Project、accesskeyId、accesskeySecret、Table、分組鍵partition等信息進行修改:
修改相應信息后,點擊“校驗”,校驗通過后,點擊確定按鈕即可保存修改。
數(shù)據(jù)源修改后,需要更新配置并索引重建才可供線上集群使用,詳情可參考配置更新;
建議分區(qū)設置到小時維度,比如yyyyMMddHH,2022011314,這樣方便以后一天產(chǎn)出多個全量。
刪除MaxCompute數(shù)據(jù)源
選擇數(shù)據(jù)源配置,點擊刪除
點擊刪除后,會判斷當前數(shù)據(jù)源是否被索引表引用:
如果數(shù)據(jù)源未被索引表引用時,點擊確定后,刪除當前數(shù)據(jù)源;修改之后,需要推送配置,索引重建后才生效;
如果數(shù)據(jù)源被索引表引用時,直接刪除數(shù)據(jù)源會有相應的報錯,如下圖:
需要先刪除數(shù)據(jù)源被引用的索引表(刪除索引表),才能刪除該數(shù)據(jù)源。
注意事項
編輯數(shù)據(jù)源時,不可修改數(shù)據(jù)源名稱;
MaxCompute不支持外部表,需要創(chuàng)建內(nèi)部表;
MaxCompute的數(shù)據(jù)源所配置的表需要是有分區(qū)的表;
用戶在MaxCompute上產(chǎn)出的表作為全量輸入,使用API數(shù)據(jù)源推送實時數(shù)據(jù);