MaxCompute(原ODPS)數(shù)據(jù)源配置
開放數(shù)據(jù)處理服務MaxCompute(原ODPS)是一個開放的計算平臺,如果您要導入到OpenSearch的數(shù)據(jù)是由MaxCompute平臺計算而產(chǎn)生的,則可以在應用中配置MaxCompute源信息,在觸發(fā)應用索引重建任務后,系統(tǒng)會自動去獲取 MaxCompute 表中的全量數(shù)據(jù),后續(xù)的增量需通過調用SDK API推送過來。
設置賬號AccessKey
目前在OpenSearch中配置MaxCompute數(shù)據(jù)源后,OpenSearch是通過用戶填寫的accessKey和accessKeySecret去下載MaxCompute數(shù)據(jù)表的數(shù)據(jù),因此在配置MaxCompute數(shù)據(jù)源之前,需要確定賬號的accessKey和accessKeySecret。
MaxCompute和OpenSearch需要同屬于一個賬號。
如果用戶確定可以使用主賬號的accessKey和accessKeySecret,那么即可用主賬號的accessKey和accessKeySecret去訪問該賬號下的MaxCompute中project的表。
如果使用主賬號的accessKey和accessKeySecret風險較大,也可以通過子賬號去配置,配置步驟如下:
在該主賬號下創(chuàng)建一個子賬號,詳情可參考創(chuàng)建RAM用戶;
在MaxCompute中為該子賬號添加成員:
角色可由用戶自行選擇:
添加成員之后,在MaxCompute數(shù)據(jù)開發(fā)界面查看其賬號,命令為
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數(shù)據(jù)源。
配置MaxCompute 數(shù)據(jù)源
選擇通過數(shù)據(jù)源配置應用:
選擇MaxCompute數(shù)據(jù)源:
點擊新建數(shù)據(jù)庫,配置MaxCompute(原ODPS)信息,填寫project,以及已經(jīng)在 MaxCompute授權的賬號的accessKey和accessKeySecret:
連接后選擇需要配置的數(shù)據(jù)源:
完成后,系統(tǒng)會自動映射出對應的字段,用戶可根據(jù)業(yè)務需求,進行微調,符合需求后點擊下一步:
配置應用結構時,OpenSearch規(guī)定必須要有一張主表,并且各個表需要配置唯一的主鍵字段。
配置索引結構,可根據(jù)用戶的檢索需求,選擇合適的分析器,詳情可參考索引結構,符合需求后點擊下一步:
配置數(shù)據(jù)源(包括:配置字段映射關系,選擇分區(qū)信息,選擇數(shù)據(jù)同步并發(fā)控制機制);
5.1. 配置字段映射關系:點擊操作欄中的編輯按鈕,OpenSearch為MaxCompute(原ODPS)的數(shù)據(jù)提供了若干數(shù)據(jù)源插件說明,如要使用,則在配置字段對應關系的同時,點擊“內容轉換”列中的“+”符號,則會在源字段被同步到OpenSearch之前,先進行內容轉換,再進行同步。如果內容轉換插件由于配置錯誤、無法連接等錯誤失效,則源字段仍然會被同步到目標字段,只是內容不會被轉換。
配置插件:
對于ODPS表中的datetime類型系統(tǒng)會自動轉化為毫秒數(shù),請將對應OpenSearch字段類型設置為INT。
目前已經(jīng)支持的MaxCompute(原ODPS)的字段類型有:Bigint、Double、Boolean、Datetime、String、Decimal。
5.2. 選擇分區(qū)信息:根據(jù)MaxCompute(原ODPS)數(shù)據(jù)特性,OpenSearch允許用戶根據(jù)具體需要來指定導入的分區(qū),支持正則表達式,表示導入前一天的數(shù)據(jù),結合應用基本信息-索引重建-定時索引重建功能,可以實現(xiàn)每天導入新分區(qū)數(shù)據(jù)的效果。
正則表達式 (等號/逗號/分號/雙豎線為系統(tǒng)保留,每天自動導入前1天分區(qū)全量數(shù)據(jù)條件例子ds=%Y%m%d || -1 days)
ds為分區(qū)字段名,“=”兩邊不允許有空格等其他不可見字符
不同場景下MaxCompute(原ODPS)分區(qū)條件用法,參考如下所示:
1: 支持多個分區(qū)過濾規(guī)則,不同的分區(qū)過濾規(guī)則用分號分隔,如pt=1;pt=2將匹配滿足分區(qū)字段pt=1或者pt=2的所有分區(qū)。
2: 分區(qū)過濾規(guī)則,支持指定多個分區(qū)字段的值,不同分區(qū)字段用逗號分隔,如:pt1=1,pt2=2,pt3=3 將匹配同時滿足pt1=1,pt2=2,pt3=3的所有分區(qū)【多分區(qū)目前不支持function功能,即不支持 %Y%m%d || -1 days這樣的,單分區(qū)是可以支持的】。
例:(如上圖所示一張odps表中有pt分區(qū)下有ds分)
多個分區(qū):pt=1;pt=2 將同步pt=1 和 pt=2分區(qū)下的所有數(shù)據(jù)
指定多個分區(qū)字段的值:pt=1,ds=1 將同步pt=1同時ds=1的分區(qū)數(shù)據(jù)
不支持情況:pt=1,ds=%Y%m%d || -1 days 或者pt=1;pt=%Y%m%d || -1 days 該類情況暫不支持
3: 分區(qū)字段的值支持通配符 *,表示該分區(qū)字段可以為任意的值,這種情況下,過濾規(guī)則中也可不寫該字段
4: 分區(qū)字段的值支持正則表達式,如pt=[0-9]* 將匹配pt值為數(shù)字的所有分區(qū)。
5: 分區(qū)字段的值支持時間匹配,匹配規(guī)則: pt=包含格式化時間的分區(qū)列值||時間間隔表達式。如ds=%Y%m%d || -1 days,表示分區(qū)字段為ds,格式為20150510,需要訪問1天前的數(shù)據(jù)。
5.1 格式化時間參數(shù)支持標準的時間格式參數(shù),如下表
5.2 時間間隔表達式支持 +/- n week|weeks|day|days|hour|hours|minute|minutes|second|seconds|microsecond|microseconds, +號表示任務創(chuàng)建時間的表示n周/天/小時/分鐘/秒/毫秒后,-號表示任務創(chuàng)建時間的表示n周/天/小時/分鐘/秒/毫秒前。
5.3 系統(tǒng)默認會對所有過濾規(guī)則,按照+0 days進行時間參數(shù)替換,因此,需要注意的是,用于過濾的字段值不能包含下面這些字符串作為普通的字符串參數(shù),如星期三創(chuàng)建的任務,pt=%abc 將匹配pt的值為Wedbc的分區(qū),而不是pt=%abc的分區(qū)。
正則表達式全部可用參數(shù)及含義,參考如下:
%d: 日在這個月中的天數(shù)(是這個月的第幾天)
%H: 小時(24小時制,[0, 23])
%m: 月份([01,12])
%M: 分鐘([00,59])
%S: 秒(范圍為[00,61])
%y: 2個數(shù)字表示的年份
%Y: 4個數(shù)字表示的年份
5.3. 選擇數(shù)據(jù)同步并發(fā)控制機制:
當用戶勾選【使用done文件】后,OpenSearch支持用戶通過上傳done文件的方式控制系統(tǒng)拉取全量數(shù)據(jù)的時機,保證全量數(shù)據(jù)的完整性。系統(tǒng)在開始從MaxCompute(原ODPS)拉全量數(shù)據(jù)之前會先判斷一下當天的done文件是否存在,如果不存在則等待,默認等待1小時后超時。
用戶需從odps官網(wǎng)下載odpscm,文件名為:odps_clt_release_64.tar.gz;
用戶需要具有所在project空間的CreateResource權限;
安裝后在用戶程序中運行如下命令:其中done文件的命名規(guī)則為$prefix_%Y-%m-%d。$prefix: 文件名前綴,默認為表名,%Y-%m-%d:索引重建任務日期,系統(tǒng)定時任務目前支持的最小粒度為1天。
odpscmd -u accessid -p accesskey --project=<prj_name>-e "add file <done file>;"
MaxCompute客戶端odpscmd使用說明,請參考使用本地客戶端(odpscmd)連接。
done文件內容為JSON格式,目前僅需包含如下內容,用于指定該批全量數(shù)據(jù)的時間戳(毫秒)【最多只保留3天增量,因此該時間點不可以超過3天】。
該時間戳表示需要回溯的增量數(shù)據(jù)時間點,如果不配置則默認從索引重建任務開始時間追加數(shù)據(jù)【最多只保留3天增量,因此該時間點不可以超過3天】。
【例如】全量數(shù)據(jù)是今天9點的,odps處理完畢后為10點,OpenSearch定時任務為10:30,則done文件需要指定為當天9點的毫秒值,在處理完全量后系統(tǒng)會追加當天9點后的增量,保證數(shù)據(jù)完整性;否則會從默認任務啟動時間10:30開始追加,這樣9:00~10:30期間的增量會丟失,該行為非常重要,需要特別注意。(當然,若沒有增量,則無需配置該時間戳)。
高級版done文件內容如下所示(提示:標準版中需設置的數(shù)據(jù)時間值也是類似原理,都是用來追索引重建期間API的增量數(shù)據(jù)的)。
{
"timestamp":"1234567890000"
}
done file與數(shù)據(jù)時間的優(yōu)先級:
ODPS數(shù)據(jù)源的“數(shù)據(jù)時間”目前是必選的,且優(yōu)先于donefile;
用戶如果只創(chuàng)建一個版本,就只需要指定“數(shù)據(jù)時間”,沒有辦法單獨使用donefile;
用戶如果需要使用定時索引重建,就必須“數(shù)據(jù)時間”和donefile都配置:第一個版本優(yōu)先使用“數(shù)據(jù)時間”,之后的每一個版本都優(yōu)先使用donefile;
目前 MaxCompute 數(shù)據(jù)源只支持全量同步,不支持增量同步。