了解 U-SQL 與 Spark 資料格式之間的差異

重要

Azure Data Lake Analytics 於 2024 年 2 月 29 日淘汰。 使用此公告深入瞭解。

針對數據分析,您的組織可以使用 Azure Synapse AnalyticsMicrosoft Fabric

如果您想要使用 Azure DatabricksAzure HDInsight Spark,建議您將資料從 Azure Data Lake Storage Gen1 移轉至 Azure Data Lake Storage Gen2

除了移動檔案之外,您也會想要讓資料儲存在 U-SQL 資料表中,可供 Spark 存取。

移動儲存在 Azure Data Lake Storage Gen1 檔案中的資料

儲存在檔案中的資料可以透過各種方式移動:

我們建議您檢閱本文章將您的巨量資料分析解決方案從 Azure Data Lake Storage Gen1 升級為 Azure Data Lake Storage Gen2 預覽版

移動儲存在 U-SQL 資料表中的資料

Spark 無法瞭解 U-SQL 資料表。 如果您有儲存在 U-SQL 資料表中的資料,您將執行 U-SQL 作業來擷取資料表資料,並以 Spark 可辨識的格式加以儲存。 最適當的格式是依照 Hive 中繼存放區的資料夾配置來建立一組 Parquet 檔案。

您可以使用內建 Parquet 輸出器在 U-SQL 中完成輸出,並使用動態輸出分割搭配檔案集來建立資料分割資料夾。 處理比以往更多的檔案,並使用 Parquet 提供如何建立這類 Spark 消費性資料的範例。

在此轉換之後,您會複製資料,如移動儲存在 Azure Data Lake Storage Gen1 檔案中的資料一章中所述。

警示

  • 資料語意 複製檔案時,會在位元組層級複製。 因此,相同的資料應該會出現在 Azure Data Lake Storage Gen2 帳戶中。 不過請注意,Spark 可能會以不同的方式解譯某些字元。 例如,它可能會針對 CSV 檔案中的資料列分隔符號使用不同的預設值。 此外,如果您要 (從資料表) 複製具類型的資料,Parquet 和 Spark 的部分具類型值可能會有不同的精確度和級別 (例如,浮點數),而且可能會以不同的方式處理 Null 值。 例如,U-SQL 具有 Null 值的 C# 語意,而 Spark 有 Null 值的三值邏輯。

  • 資料組織 (分割) U-SQL 資料表提供兩個層級資料分割。 外部層級 (PARTITIONED BY) 是以值為依據,大部分會使用資料夾階層對應到 Hive/Spark 資料分割配置。 您必須確定 Null 值會對應到正確的資料夾。 U-SQL 中的內部層級 (DISTRIBUTED BY) 提供四種散發配置:迴圈配置資源、範圍、哈希和直接哈希。 Hive/Spark 資料表僅支援使用與 U-SQL 不同的雜湊函式,進行值分割或雜湊分割。 當您輸出 U-SQL 數據表數據時,您可能只能對應至 Spark 的值分割,而且可能需要根據您的最終 Spark 查詢進一步調整數據配置。

下一步