1、我們在學習nifi的過程中有接觸到Avro schema,當時我在想kettle應該也支援Avro,果不其然kettle也是支援Avro檔案的讀和寫的。今天我們一起來學習下kettle中如何使用Avro input 讀步驟。對Avro 不瞭解的,可以學習文章ETL工具-nifi乾貨系列 第四講 Avro schema 序列化框架。
開啟spoon,拖拉Avro input和寫日誌步驟到畫布,然後連線,如下圖所示:
2、雙擊Avro input 步驟進行配置,如下圖所示:
Step name:自定義步驟名稱
Source-Format:資料來源格式,有Avro file,JSON datum,Binary datum,Avro file(use alternate schema),本次演示採用Avro file
Avro file(Avro 檔案)
源材料位於單個位置。模式嵌入在資料中。
JSON datum(JSON 資料)
源材料位於不同位置。資料以JSON格式包含,並且模式與資料分離。
Binary datum(二進位制資料)
源材料位於不同位置。資料以二進位制格式包含,並且模式與資料分離。
Avro檔案(使用備用模式)
源材料位於不同位置。模式與資料分離。
Source-Source:
from file,透過瀏覽選擇Avro 檔案
from field,透過選擇前置步驟的欄位進行設定
3、Avro fields,本選項卡主要是提取Avro 資料檔案中的欄位,點選Get fileds之後會自動填充,然後可以繼續進行調整設定,如下圖所示:
Avro path (Avro type):Avro源的位置(及其格式型別)。
Indexed values:
Avro路徑集合中要使用的索引鍵。您可以使用此欄位進行對映或陣列擴充套件,從而將陣列或對映值擴充套件為返回多行資料。
要返回對映元素,請指定索引鍵。
要返回陣列元素,請指定陣列索引號,或者使用星號萬用字元 (*) 來返回陣列的所有元素。
當此欄位留空時,不會返回欄位的資料。
Name:輸入欄位的名稱。
Type:輸入欄位的型別,例如String或Date。
Format:輸入欄位的格式。
Pass through fields from previous step:
選擇之後將欄位從上一步傳遞到下一步,同時將當前步驟中的欄位傳遞到下一步。
清除選擇不將上一步欄位傳遞到下一步。
Allow null values for missing paths or fields:
選擇以使用null值替換傳入資料中的缺失欄位。
清除選擇以不使用null值替換缺失欄位。
4、Lookup fields
你可以使用查詢欄位選項卡建立變數,並將它們對映到特定欄位,以在解碼時用作對 Avro 結構的查詢。
更多細節可以參考官網文件https://docs.hitachivantara.com/r/en-us/pentaho-data-integration-and-analytics/10.1.x/mk-95pdia003/pdi-transformation-steps/avro-input/options/lookup-fields-tab