1、上一節課我們學習了avro input,本節課我們一起學習下avro out步驟。
本節課通過json input 加載json文件,通過avro out 生成avro二進制文件,寫日誌步驟打印日誌。將json input、avro output、寫日誌三個步驟拖到畫布,然後連線,如下圖所示:
json input 步驟不在過多講解,不瞭解的可以學習kettle從入門到精通 第八課 kettle JSON輸入
2、Avro output步驟將PDI數據流中的數據序列化爲Avro二進制或JSON格式,然後寫入文件。
這個輸出步驟創建了以下文件:
1). 包含Avro格式輸出數據的文件
2). 由此步驟中字段定義的Avro模式文件
Step name:自定義步驟名稱
Forder/File name:指定文件或文件夾的位置和名稱。您還可以單擊瀏覽按鈕導航到目標avro文件或avro文件所在文件夾。
Overwrite existing output file:選擇覆蓋具有相同文件名和擴展名的現有文件。
Fields:
Avro path:字段的名稱將在Avro數據和模式文件中顯示。
Name:PDI字段的名稱。
Avro type:定義字段的Avro數據類型。可以通過下拉方式進行選擇。
Precision:僅適用於Decimal Avro類型,數字中的總位數。默認值爲10。
Scale:僅適用於Decimal Avro類型,小數點後的位數。默認值爲0。
Default value:字段的默認值,如果爲空或爲null。
Null:指定字段是否可以包含空值。可以選擇Yes和No。
如下時PDI type和Avro type的映射對應關係:
PDI Type | Avro Type |
---|---|
InetAddress | String |
String | String |
TimeStamp | TimeStamp |
Binary | Bytes |
BigNumber | Decimal |
Boolean | Boolean |
Date | Date |
Integer | Long |
Number | Double |
注:爲了避免轉換失敗,請確保默認值字段包含所有字段的值,其中空值設置爲否。
3、Schema選項卡,如下圖所示:
File name:指定完整的URL,用於寫入Avro模式文件。URL的格式可能根據文件系統類型不同而有所不同。您也可以點擊“瀏覽”以導航到您文件系統上的模式文件。如果模式文件已存在,則會被覆蓋。如果您沒有爲輸出指定單獨的模式文件,PDI將在Avro數據文件中寫入嵌入式模式。
Namespace:命名空間,定義模式的“完整名稱”(例如,對於示例,爲 example.avro).
Record name:指定Avro記錄的名稱(例如,myAvro)。
Doc value:指定爲模式提供的文檔,也就是備註。
4、Options 選項卡,如下圖所示:
Compression:指定用於在Avro輸出文件中壓縮數據塊的以下編解碼器之一:
- None:不使用壓縮(默認)。
- Deflate:數據塊使用RFC 1951中指定的deflate算法編寫,通常使用zlib庫實現。
- Snappy:數據塊使用Google的Snappy壓縮庫編寫,並在每個塊中跟隨未壓縮數據的4字節大端CRC32校驗和。
Include date in filename:將系統生成文件的系統日期添加到默認格式yyyyMMdd(例如20240405)的輸出文件名中。
Include time in filename:將系統生成文件的系統時間添加到默認格式HHmmss(例如235959)的輸出文件名中。
Specify date time format:"從下拉列表中可用的選項中選擇一個不同的日期時間格式,添加到輸出文件名中。"
5、生成文件
avro schema 文件
avro 二進制文件