全部產品
Search
文件中心

OpenSearch:MaxCompute(原ODPS)資料來源配置

更新時間:Jul 13, 2024

開放資料處理服務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風險較大,也可以通過子帳號去配置,配置步驟如下:

  1. 在該主帳號下建立一個子帳號,詳情可參考建立RAM使用者

  2. 在MaxCompute中為該子帳號新增成員:

001

角色可由使用者自行選擇:

002

  1. 新增成員之後,在MaxCompute資料開發介面查看其帳號,命令為list users;

003

  1. 整體複製該帳號名,然後給該帳號賦權(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 資料來源

  1. 選擇通過資料來源配置應用:

004

選擇MaxCompute資料來源:

005

  1. 點擊建立資料庫,配置MaxCompute(原ODPS)資訊,填寫project,以及已經在 MaxCompute授權的帳號的accessKey和accessKeySecret:

005

  1. 串連後選擇需要配置的資料來源:

006

完成後,系統會自動對應出對應的欄位,使用者可根據業務需求,進行微調,符合需求後點擊下一步

007

重要

配置應用結構時,OpenSearch規定必須要有一張主表,並且各個表需要配置唯一的主鍵欄位。

  1. 配置索引結構,可根據使用者的檢索需求,選擇合適的分析器,詳情可參考索引結構,符合需求後點擊下一步

007

  1. 配置資料來源(包括:配置欄位對應關係,選擇分區資訊,選擇資料同步並發控制機制);

5.1. 配置欄位對應關係:點擊操作欄中的編輯按鈕,OpenSearch為MaxCompute(原ODPS)的資料提供了若干資料來源外掛程式說明,如要使用,則在配置欄位對應關係的同時,點擊“內容轉換”列中的“+”符號,則會在源欄位被同步到OpenSearch之前,先進行內容轉換,再進行同步。如果內容轉換外掛程式由於配置錯誤、無法串連等錯誤失效,則源欄位仍然會被同步到目標欄位,只是內容不會被轉換。

2

配置外掛程式:3

重要

    目前已經支援的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)

1

說明

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這樣的,單分區是可以支援的】。

1

:(如上圖所示一張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與資料時間的優先順序:

  1. ODPS資料來源的“資料時間”目前是必選的,且優先於donefile;

  2. 使用者如果只建立一個版本,就只需要指定“資料時間”,沒有辦法單獨使用donefile;

  3. 使用者如果需要使用定時索引重建,就必須“資料時間”和donefile都配置:第一個版本優先使用“資料時間”,之後的每一個版本都優先使用donefile;

重要

目前 MaxCompute 資料來源只支援全量同步,不支援增量同步處理