kettle從入門到精通 第五十二課 ETL之kettle Avro output kettle從入門到精通 第八課 kettle JSON輸入

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 TypeAvro 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 二進制文件

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章