開放資料處理服務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資料開發介面查看其帳號,命令為
list users;
,更多參考使用控制台(查詢編輯器)串連:
整體複製該帳號名,然後給該帳號賦權(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(原ODPS)資訊,填寫project,以及已經在 MaxCompute授權的帳號的accessKey和accessKeySecret:
串連後選擇需要配置的資料表:
完成後,系統會自動對應出對應的欄位,使用者可根據業務需求,進行微調,符合需求後點擊下一步:
配置應用結構時,OpenSearch-行業演算法版規定必須要有一張主表,並且各個表需要配置唯一的主鍵欄位。
配置索引結構,可根據使用者的檢索需求,選擇合適的分析器,詳情可參考索引結構,符合需求後點擊下一步:
配置資料來源(包括:配置欄位對應關係,選擇分區資訊,選擇資料同步並發控制機制);
5.1. 配置欄位對應關係:點擊操作欄中的編輯按鈕,OpenSearch-行業演算法版為MaxCompute(原ODPS)的資料提供了若干資料來源外掛程式說明,如要使用,則在配置欄位對應關係的同時,點擊“內容轉換”列中的“+”符號,則會在源欄位被同步到OpenSearch-行業演算法版之前,先進行內容轉換,再進行同步。如果內容轉換外掛程式由於配置錯誤、無法串連等錯誤失效,則源欄位仍然會被同步到目標欄位,只是內容不會被轉換。
配置外掛程式:
目前已經支援的MaxCompute(原ODPS)的欄位類型有:Bigint、Double、Boolean、Datetime、String、Decimal。
對於ODPS表中的datetime類型系統會自動轉化為毫秒數,請將對應OpenSearch-行業演算法版欄位類型設定為INT。
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;
注意事項
目前 MaxCompute 資料來源只支援全量同步,不支援增量同步處理。