Azure Data Factory 和 Synapse Analytics 中的 Avro 格式
適用于: Azure Data Factory Azure Synapse Analytics
提示
試用 Microsoft Fabric 中的 Data Factory,這是適用于企業的單一分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告等所有專案。 瞭解如何 免費啟動新的試用版 !
當您想要剖 析 Avro 檔案或將資料寫入 Avro 格式 時,請遵循這篇文章。
下列連接器支援 Avro 格式: Amazon S3、 Amazon S3 相容儲存體 、 Azure Blob 、Azure Data Lake 儲存體 Gen1 、 Azure Data Lake 儲存體 Gen2 、Azure 檔案儲存體 、 檔案系統 、 FTP 、 Google Cloud 儲存體 、HDFS 、HTTP 、 Oracle Cloud 儲存體 和 SFTP 。
資料集屬性
如需可用來定義資料集之區段和屬性的完整清單,請參閱 資料集 一文。 本節提供 Avro 資料集所支援的屬性清單。
屬性 | 描述 | 必要 |
---|---|---|
type | 資料集的 type 屬性必須設定為 Avro 。 | Yes |
location | 檔案的位置設定。 每個檔案型連接器都有自己的位置類型和支援的屬性。 location 請參閱連接器文章 - > 資料集屬性一節 中的詳細資料。 |
Yes |
avroCompressionCodec | 寫入 Avro 檔案時要使用的壓縮編解碼器。 從 Avro 檔案讀取時,服務會自動根據檔案中繼資料來判斷壓縮編解碼器。 支援的類型為 「 none 」 (預設值)、「 deflate 」、「 snappy 」。 請注意,讀取/寫入 Avro 檔案時,目前複製活動不支援 Snappy。 |
No |
注意
Avro 檔案不支援資料行名稱中的空白字元。
以下是 Azure Blob 儲存體 上的 Avro 資料集範例:
{
"name": "AvroDataset",
"properties": {
"type": "Avro",
"linkedServiceName": {
"referenceName": "<Azure Blob Storage linked service name>",
"type": "LinkedServiceReference"
},
"schema": [ < physical schema, optional, retrievable during authoring > ],
"typeProperties": {
"location": {
"type": "AzureBlobStorageLocation",
"container": "containername",
"folderPath": "folder/subfolder",
},
"avroCompressionCodec": "snappy"
}
}
}
複製活動屬性
如需可用來定義活動的區段和屬性的完整清單,請參閱 管線 一文。 本節提供 Avro 來源和接收所支援的屬性清單。
Avro 作為來源
複製活動 *source* 區段中支援下列屬性。
屬性 | 描述 | 必要 |
---|---|---|
type | 複製活動來源的 type 屬性必須設定為 AvroSource 。 | Yes |
store設定 | 如何從資料存放區讀取資料的一組屬性。 每個檔案型連接器在 下 storeSettings 都有自己的支援讀取設定。 請參閱連接器文章 - > 複製活動屬性一節 中的詳細資料。 |
No |
Avro 作為接收
複製活動 *sink* 區段中支援下列屬性。
屬性 | 描述 | 必要 |
---|---|---|
type | 複製活動來源的 type 屬性必須設定為 AvroSink 。 | Yes |
format設定 | 屬性群組。 請參閱下方的 Avro 寫入設定 表。 | No |
store設定 | 如何將資料寫入資料存放區的屬性群組。 每個檔案型連接器在 下 storeSettings 都有自己的支援寫入設定。 請參閱連接器文章 - > 複製活動屬性一節 中的詳細資料。 |
No |
支援的 Avro 寫入設定 : formatSettings
屬性 | 描述 | 必要 |
---|---|---|
type | 格式的類型設定必須設定為 AvroWrite設定 。 | Yes |
maxRowsPerFile | 將資料寫入資料夾時,您可以選擇寫入多個檔案,並指定每個檔案的資料列上限。 | No |
fileNamePrefix | 設定時 maxRowsPerFile 適用。將資料寫入多個檔案時,指定檔案名前置詞,導致此模式: <fileNamePrefix>_00000.<fileExtension> 。 如果未指定,則會自動產生檔案名前置詞。 當來源是檔案型存放區或 啟用資料分割選項的資料存放區 時,這個屬性不適用。 |
No |
對應資料流程屬性
在對應資料流程中,您可以在下列資料存放區中讀取和寫入 avro 格式: Azure Blob 儲存體 、Azure Data Lake 儲存體 Gen1 、 Azure Data Lake 儲存體 Gen2 和 SFTP ,而且您可以在 Amazon S3 中 讀取 avro 格式。
來源屬性
下表列出 avro 來源所支援的屬性。 您可以在 [ 來源選項 ] 索引標籤中編輯這些屬性。
名稱 | 描述 | 必要 | 允許的值 | 資料流程腳本屬性 |
---|---|---|---|---|
萬用字元路徑 | 將會處理符合萬用字元路徑的所有檔案。 覆寫資料集中設定的資料夾和檔案路徑。 | 否 | String[] | 萬用字元路徑 |
資料分割根路徑 | 針對分割的檔案資料,您可以輸入資料分割根路徑,以將資料分割資料夾讀取為數據行 | 否 | String | partitionRootPath |
檔案清單 | 您的來源是否指向列出要處理的檔案的文字檔 | 否 | true 或 false |
fileList |
要儲存檔案名的資料行 | 使用來原始檔案名和路徑建立新的資料行 | 否 | String | rowUrlColumn |
完成之後 | 在處理之後刪除或移動檔案。 檔案路徑從容器根目錄開始 | 否 | 刪除: true 或 false 移動: ['<from>', '<to>'] |
purgeFiles moveFiles |
依上次修改日期來篩選 | 選擇根據上次更改檔案的時間篩選檔案 | 否 | 時間戳記 | modifiedAfter modifiedBefore |
允許找不到任何檔案 | 如果為 true,則找不到任何檔案時不會擲回錯誤 | 否 | true 或 false |
ignoreNoFilesFound |
接收屬性
下表列出 avro 接收所支援的屬性。 您可以在 [設定] 索引卷 標中 編輯這些屬性。
名稱 | 描述 | 必要 | 允許的值 | 資料流程腳本屬性 |
---|---|---|---|---|
清除資料夾 | 如果在寫入之前清除目的地資料夾 | 否 | true 或 false |
truncate |
檔案名選項 | 寫入資料的命名格式。 根據預設,每個分割區一個檔案的格式為 part-#####-tid-<guid> |
否 | 模式:字串 每個分割區:String[] 當做資料行中的資料:字串 輸出至單一檔案: ['<fileName>'] |
filePattern partitionFileNames rowUrlColumn partitionFileNames |
全部引述 | 以引號括住所有值 | 否 | true 或 false |
quoteAll |
資料類型支援
複製活動
複製活動不支援 Avro 複雜資料類型 (記錄、列舉、陣列、地圖、等位和固定)。
資料流程
在資料流程中使用 Avro 檔案時,您可以讀取和寫入複雜的資料類型,但請務必先從資料集清除實體架構。 在資料流程中,您可以設定邏輯投影並衍生複雜結構的資料行,然後將這些欄位自動對應至 Avro 檔案。