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 Storage Gen1、Azure Data Lake Storage Gen2、Azure 檔案儲存體、檔案系統、FTP、Google Cloud Storage、HDFS、HTTP、Oracle Cloud Storage 和 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 作為來源
複製活動的 [來源] 區段支援下列屬性。
屬性 | 描述 | 必要 |
---|---|---|
type | 複製活動來源的 type 屬性必須設定為 AvroSource。 | Yes |
storeSettings | 屬性群組,可決定從資料存放區讀取資料的方式。 在 storeSettings 下,每個檔案型連接器都包含專屬的支援讀取設定。 請參閱連接器文章 -> 複製活動屬性一節中的詳細資料。 |
No |
將 Avro 作為接收
複製活動的 [接收] 區段支援下列屬性。
屬性 | 描述 | 必要 |
---|---|---|
type | 複製活動來源的 type 屬性必須設定為 AvroSink。 | Yes |
formatSettings | 屬性群組。 請參閱下方 Avro 寫入設定資料表。 | No |
storeSettings | 屬性群組,可決定將資料寫入資料存放區的方式。 每個以檔案為基礎的連接器在 storeSettings 底下皆具有自身的支援寫入設定。 請參閱連接器文章 -> 複製活動屬性一節中的詳細資料。 |
No |
formatSettings
底下的支援 Avro 寫入設定:
屬性 | 描述 | 必要 |
---|---|---|
type | formatSettings 的 type 必須設定為 AvroWriteSettings。 | Yes |
maxRowsPerFile | 當您將資料寫入資料夾時,可以選擇寫入多個檔案,並指定每個檔案的資料列上限。 | No |
fileNamePrefix | 當 maxRowsPerFile 完成設定時適用。當您將資料寫入多個檔案時,請指定檔案名稱前置詞,使系統進行此模式: <fileNamePrefix>_00000.<fileExtension> 。 如果未指定,系統會自動產生檔案名稱前置詞。 當來源是以檔案為基礎的存放區,或啟用資料分割選項的資料存放區時,系統不會套用此屬性。 |
No |
對應資料流程屬性
在對應資料流程中,您可以在下列資料存放區讀取和寫入 avro 格式:Azure Blob 儲存體、Azure Data Lake Storage Gen1、Azure Data Lake Storage Gen2 和 SFTP,且您可以在 Amazon S3 中讀取 avro 格式。
來源屬性
下表列出 avro 來源所支援的屬性。 您可以在 [來源選項] 索引標籤中編輯這些屬性。
名稱 | 描述 | 必要 | 允許的值 | 資料流程指令碼屬性 |
---|---|---|---|---|
萬用字元路徑 | 系統會處理符合萬用字元路徑的所有檔案。 覆寫資料集的資料夾和檔案路徑集合。 | 否 | String[] | wildcardPaths |
分割區根路徑 | 如果是分割的檔案資料,您可以輸入分割區根路徑,讀取作為資料行的分割資料夾 | 否 | 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 每個分割區:String[] 作為資料行中的資料:String 輸出至單一檔案: ['<fileName>'] |
filePattern partitionFileNames rowUrlColumn partitionFileNames |
全部以引號括住 | 以引號括住所有值 | 否 | true 或 false |
quoteAll |
資料類型支援
複製活動
複製活動不支援 Avro 複雜資料類型 (記錄、列舉、陣列、對應、等位和固定)。
資料流程
在資料流程中使用 Avro 檔案時,您可以讀取和寫入複雜的資料類型,但請務必先從資料集清除實體結構描述。 在資料流程中,您可以設定邏輯投影,並衍生複雜結構的資料行,並將這些欄位自動對應至 Avro 檔案。