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
檔案清單 您的來源是否指向列出要處理的檔案的文字檔 truefalse fileList
要儲存檔案名的資料行 使用來原始檔案名和路徑建立新的資料行 String rowUrlColumn
完成之後 在處理之後刪除或移動檔案。 檔案路徑從容器根目錄開始 刪除: truefalse
移動: ['<from>', '<to>']
purgeFiles
moveFiles
依上次修改日期來篩選 選擇根據上次更改檔案的時間篩選檔案 時間戳記 modifiedAfter
modifiedBefore
允許找不到任何檔案 如果為 true,則找不到任何檔案時不會擲回錯誤 truefalse ignoreNoFilesFound

接收屬性

下表列出 avro 接收所支援的屬性。 您可以在 [設定] 索引卷 標中 編輯這些屬性。

名稱 描述 必要 允許的值 資料流程腳本屬性
清除資料夾 如果在寫入之前清除目的地資料夾 truefalse truncate
檔案名選項 寫入資料的命名格式。 根據預設,每個分割區一個檔案的格式為 part-#####-tid-<guid> 模式:字串
每個分割區:String[]
當做資料行中的資料:字串
輸出至單一檔案: ['<fileName>']
filePattern
partitionFileNames
rowUrlColumn
partitionFileNames
全部引述 以引號括住所有值 truefalse quoteAll

資料類型支援

複製活動

複製活動不支援 Avro 複雜資料類型 (記錄、列舉、陣列、地圖、等位和固定)。

資料流程

在資料流程中使用 Avro 檔案時,您可以讀取和寫入複雜的資料類型,但請務必先從資料集清除實體架構。 在資料流程中,您可以設定邏輯投影並衍生複雜結構的資料行,然後將這些欄位自動對應至 Avro 檔案。