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