開放資料處理服務 MaxCompute(原 ODPS)是一個大規模計算平台。若您的 OpenSearch-行業演算法版資料來源自 MaxCompute,可在應用中配置 MaxCompute 源資訊。該方案支援 MaxCompute 三級表結構。觸發索引重建任務後,系統將自動拉取表中的全量資料;後續增量資料則需通過調用 SDK API 進行推送。
設定帳號AccessKey
目前在OpenSearch-行業演算法版中配置MaxCompute資料來源後,OpenSearch-行業演算法版是通過使用者填寫的accessKey和accessKeySecret去下載MaxCompute資料表的資料,因此在配置MaxCompute資料來源之前,需要確定帳號的accessKey和accessKeySecret。
MaxCompute和OpenSearch需要同屬於一個帳號。
-
如果使用者確定可以使用主帳號的accessKey和accessKeySecret,那麼即可用主帳號的accessKey和accessKeySecret去訪問該帳號下的MaxCompute中project的表。
-
如果使用主帳號的accessKey和accessKeySecret風險較大,也可以通過子帳號去配置,配置步驟如下。
-
在該主帳號下建立一個子帳號,詳情可參考RAM(子帳號)的建立及授權;
-
在MaxCompute中為該子帳號新增成員。
在 MaxCompute 專案管理的成員管理彈窗中,在左側搜尋成員名列表中搜尋並選擇目標 RAM 子帳號,單擊向右箭頭按鈕將其移至右側已/待新增成員名列表,也可通過底部手動新增成員輸入框直接輸入成員名(多個成員名用逗號分隔),然後單擊確定。
-
新增成員之後,在MaxCompute資料開發介面查看其帳號,命令為
list users;,更多參考使用控制台(查詢編輯器)串連:OK OK OK OK OK OK OK OK A xxx RAM$o; xxx h_test@test.xxx xxx st_1 2022-02-10 18:34:33 INFO ===xxx===================================================== 2022-02-10 18:34:33 INFO Exit code of the Shell command 0 2022-02-10 18:34:33 INFO -- Invocation of Shell command completed --- -
整體複製該帳號名,然後給該帳號賦權(xxx 表示3中複製的帳號):
-- 1.project list許可權 grant CreateInstance,List on project zy_ts_test to user xxx; -- 2.表的select,describe,download許可權 GRANT select,describe,download ON TABLE people_info TO USER xxx; -- 3.odps表的label許可權(可選) set label 2 to USER xxx; -- 查詢指定使用者的許可權資訊和綁定的角色資訊 show grants for xxx;
授權完成後即可在opensearch中配置MaxCompute資料來源。
配置MaxCompute 資料來源
-
在應用配置頁面,選擇通過資料來源配置應用,然後選擇MaxCompute資料來源。
-
在資料來源類型列表中,單擊MaxCompute,選擇MaxCompute資料來源。
-
點擊建立資料庫,配置MaxCompute(原ODPS)資訊,填寫project,以及已經在 MaxCompute授權的帳號的accessKey和accessKeySecret:
填寫完成後,單擊串連按鈕。
-
串連後選擇需要配置的資料表,如以下樣本添加三級表:
在選擇資料來源對話方塊中,單擊MaxCompute頁簽,在選擇資料庫地區選取項目已串連的資料庫,然後在選擇資料表地區勾選目標三級表(例如
default.item_table、opensearch.bank_data),通過穿梭框將其移至已選擇列表後,單擊確定。
完成後,系統會自動對應出對應的欄位,使用者可根據業務需求,進行微調,符合需求後點擊下一步:
自動對應後的欄位配置表包含欄位名稱、主鍵、類型、外表串連和操作列,使用者可為每個欄位設定類型(如 TEXT、INT)、指定主鍵、配置外表串連,並支援刪除或新增欄位。
配置應用結構時,OpenSearch-行業演算法版規定必須要有一張主表,並且各個表需要配置唯一的主鍵欄位。
-
配置索引結構,可根據使用者的檢索需求,選擇合適的分析器,詳情可參考索引結構,符合需求後點擊下一步:
樣本中配置了兩個索引:default 索引包含 country、source_buy_cnt、city、item_type、last_modify_time、channel、title、subscribe_cnt 欄位,分析方式選擇 中文-通用分析;id 索引包含 custom_pk_id 欄位,分析方式選擇 關鍵字。
-
配置資料來源(包括:配置欄位對應關係,選擇分區資訊,選擇資料同步並發控制機制);
在資料來源配置頁面,單擊+ 添加資料來源添加 MaxCompute 資料來源。
5.1. 配置欄位對應關係:點擊操作欄中的編輯按鈕,OpenSearch-行業演算法版為MaxCompute(原ODPS)的資料提供了若干資料來源外掛程式說明,如要使用,則在配置欄位對應關係的同時,點擊“內容轉換”列中的“+”符號,則會在源欄位被同步到OpenSearch-行業演算法版之前,先進行內容轉換,再進行同步。如果內容轉換外掛程式由於配置錯誤、無法串連等錯誤失效,則源欄位仍然會被同步到目標欄位,只是內容不會被轉換。
5.2. 選擇分區資訊:根據MaxCompute(原ODPS)資料特性,OpenSearch-行業演算法版允許使用者根據具體需要來指定匯入的分區,支援Regex,表示匯入前一天的資料,結合應用基本資料-索引重建-定時索引重建功能,可以實現每天匯入新分區資料的效果。
Regex (等號/逗號/分號/雙豎線為系統保留,每天自動匯入前1天分區全量資料條件例子ds=%Y%m%d || -1 days)
ds為分區欄位名,“=”兩邊不允許有空格等其他不可見字元
不同情境下MaxCompute(原ODPS)分區條件用法,參考如下所示:
-
1: 支援多個分區過濾規則,不同的分區過濾規則用分號分隔,如pt=1;pt=2將匹配滿足分區欄位pt=1或者pt=2的所有分區。
-
2: 分區過濾規則,支援指定多個分區欄位的值,不同分區欄位用逗號分隔,如:pt1=1,pt2=2,pt3=3 將匹配同時滿足pt1=1,pt2=2,pt3=3的所有分區【多分區目前不支援function功能,即不支援 %Y%m%d || -1 days這樣的,單分區是可以支援的】。

例:(如上圖所示一張odps表中有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: 分區欄位的值支援Regex,如pt=[0-9]* 將匹配pt值為數位所有分區。
-
5: 分區欄位的值支援時間匹配,匹配規則: pt=包含格式化時間的分區列值||時間間隔運算式。如ds=%Y%m%d || -1 days,表示分區欄位為ds,格式為20150510,需要訪問1天前的資料。
-
5.1 格式化時間參數支援標準的時間格式參數,如下表
-
5.2 時間間隔運算式支援 +/- n week|weeks|day|days|hour|hours|minute|minutes|second|seconds|microsecond|microseconds, +號表示任務建立時間的表示n周/天/小時/分鐘/秒/毫秒後,-號表示任務建立時間的表示n周/天/小時/分鐘/秒/毫秒前。
-
5.3 系統預設會對所有過濾規則,按照+0 days進行時間參數替換,因此,需要注意的是,用於過濾的欄位值不能包含下面這些字串作為普通的字串參數,如星期三建立的任務,pt=%abc 將匹配pt的值為Wedbc的分區,而不是pt=%abc的分區。
Regex全部可用參數及含義,參考如下:
%d: 日在這個月中的天數(是這個月的第幾天)
%H: 小時(24小時制,[0, 23])
%m: 月份([01,12])
%M: 分鐘([00,59])
%S: 秒(範圍為[00,61])
%y: 2個數字表示的年份
%Y: 4個數字表示的年份
5.3. 選擇資料同步並發控制機制:
當使用者勾選【使用done檔案】後,OpenSearch支援使用者通過上傳done檔案的方式控制系統拉取全量資料的時機,保證全量資料的完整性。系統在開始從MaxCompute(原ODPS)拉全量資料之前會先判斷一下當天的done檔案是否存在,如果不存在則等待,預設等待1小時後逾時。
-
使用者需從odps官網下載odpscm,檔案名稱為:odps_clt_release_64.tar.gz;
-
使用者需要具有所在project空間的CreateResource許可權;
-
安裝後在使用者程式中運行如下命令:其中done檔案的命名規則為$prefix_%Y-%m-%d。$prefix: 檔案名稱首碼,預設為表名,%Y-%m-%d:索引重建任務日期,系統定時任務目前支援的最小粒度為1天。
odpscmd -u accessid -p accesskey --project=<prj_name>-e "add file <done file>;" -
MaxCompute用戶端odpscmd使用說明,請參考使用本地用戶端(odpscmd)串連。
-
done檔案內容為JSON格式,目前僅需包含如下內容,用於指定該批全量資料的時間戳記(毫秒)【最多隻保留3天增量,因此該時間點不可以超過3天】。
-
該時間戳記表示需要回溯的增量資料時間點,如果不配置則預設從索引重建任務開始時間追加資料【最多隻保留3天增量,因此該時間點不可以超過3天】。
-
【例如】全量資料是今天9點的,odps處理完畢後為10點,OpenSearch定時任務為10:30,則done檔案需要指定為當天9點的毫秒值,在處理完全量後系統會追加當天9點後的增量,保證資料完整性;否則會從預設任務啟動時間10:30開始追加,這樣9:00~10:30期間的增量會丟失,該行為非常重要,需要特別注意。(當然,若沒有增量,則無需配置該時間戳記)。
-
進階版done檔案內容相關說明。(提示:標準版中需設定的資料時間值也是類似原理,都是用來追索引重建期間API的增量資料的)。
{
"timestamp":"1234567890000"
}
done file與資料時間的優先順序:
-
ODPS資料來源的“資料時間”目前是必選的,且優先於donefile;
-
使用者如果只建立一個版本,就只需要指定“資料時間”,沒有辦法單獨使用donefile;
-
使用者如果需要使用定時索引重建,就必須“資料時間”和donefile都配置:第一個版本優先使用“資料時間”,之後的每一個版本都優先使用donefile;
OpenSearch-行業演算法版支援三種阿里雲資料來源:RDS、MaxCompute(原ODPS)和PolarDB。RDS和PolarDB支援多表關聯配置,一個應用可配置主表和外表,通過外表串連實現多表資料關聯。MaxCompute(原ODPS)資料來源每個執行個體只能配置一個資料庫。OpenSearch不支援自建資料庫或外部資料源。
如需區分測試和生產環境,建立獨立的OpenSearch執行個體,分別配置不同資料來源,實現環境隔離。
注意事項
目前 MaxCompute 資料來源只支援全量同步,不支援增量同步處理。