SQL Server 大数据群集上的 Delta Lake

适用范围:SQL Server 2019 (15.x)

重要

Microsoft SQL Server 2019 大数据群集附加产品将停用。 对 SQL Server 2019 大数据群集的支持将于 2025 年 2 月 28 日结束。 具有软件保障的 SQL Server 2019 的所有现有用户都将在平台上获得完全支持,在此之前,该软件将继续通过 SQL Server 累积更新进行维护。 有关详细信息,请参阅公告博客文章Microsoft SQL Server 平台上的大数据选项

本指南介绍:

  • SQL Server 大数据群集 上的 Delta Lake 的先决条件和功能。
  • 如何加载 CU12 群集上的 Delta Lake 库以用于 Spark 2.4 会话和作业。

简介

Linux Foundation Delta Lake 是一个开源存储层,可将 ACID(原子性、一致性、隔离性和持续性)事务引入 Apache Spark 和大数据工作负载。 要详细了解 Delta Lake,请参阅:

SQL Server 大数据群集 CU13 和更高版本 (Spark 3) 上的 Delta Lake

默认情况下,已在 SQL Server 大数据群集 CU13 和更高版本上安装并配置 Delta Lake。 无需进一步执行操作。

本文介绍 SQL Server 大数据群集 CU12 和更低版本上的 Delta Lake 的配置。

在 SQL Server 大数据群集 CU12 和更低版本 (Spark 2.4) 上配置 Delta Lake

在 SQL Server 大数据群集 CU12 或更低版本上,可以使用 Spark 库管理功能加载 Delta Lake 库。

注意

一般规则是使用最新的兼容库。 本指南中的代码已通过 SQL Server 大数据群集 CU12 上的 Delta Lake 0.6.1 进行测试。 Delta Lake 0.6.1 与 Apache Spark 2.4. x 兼容,更高版本不兼容。 示例按原样提供,并非可支持性声明。

配置 Delta Lake 库和 Spark 配置选项

在提交作业之前,在应用程序中设置 Delta Lake 库。 以下库是必需的:

该库必须以 Scala 2.11 和 Spark 2.4.7 为目标。 此项 SQL Server 大数据群集 要求适用于 SQL 2019 累积更新 9 (CU9) 或更高版本。

还需要配置 Spark,以启用特定于 Delta Lake 的 Spark SQL 命令和元存储集成。 以下示例演示 Azure Data Studio 笔记本如何配置 Delta Lake 支持:

%%configure -f \
{
    "conf": {
        "spark.jars.packages": "io.delta:delta-core_2.11:0.6.1",
        "spark.sql.extensions":"io.delta.sql.DeltaSparkSessionExtension",
        "spark.sql.catalog.spark_catalog":"org.apache.spark.sql.delta.catalog.DeltaCatalog"
    }
}

共享 HDFS 上作业的库位置

如果有多个应用程序将使用 Delta Lake 库,请将相应的库 JAR 文件复制到 HDFS 上的共享位置。 然后,所有作业都应引用相同的库文件。

将库复制到常见位置:

azdata bdc hdfs cp --from-path delta-core_2.11-0.6.1.jar --to-path "hdfs:/apps/jars/delta-core_2.11-0.6.1.jar"

动态安装库

通过使用大数据群集的包管理功能,可以在提交作业时动态安装包。 由于每次提交作业时反复下载库文件,因此作业启动时间会变长。

通过使用 azdata 提交 Spark 作业

以下示例使用 HDFS 上的共享库 JAR 文件:

azdata bdc spark batch create -f hdfs:/apps/ETL-Pipelines/my-delta-lake-python-job.py \
-j '["/apps/jars/delta-core_2.11-0.6.1.jar"]' \
--config '{"spark.sql.extensions":"io.delta.sql.DeltaSparkSessionExtension","spark.sql.catalog.spark_catalog":"org.apache.spark.sql.delta.catalog.DeltaCatalog"}' \
-n MyETLPipelinePySpark --executor-count 2 --executor-cores 2 --executor-memory 1664m

本示例使用动态包管理来安装依赖项:

azdata bdc spark batch create -f hdfs:/apps/ETL-Pipelines/my-delta-lake-python-job.py \
--config '{"spark.jars.packages":"io.delta:delta-core_2.11:0.6.1","spark.sql.extensions":"io.delta.sql.DeltaSparkSessionExtension","spark.sql.catalog.spark_catalog":"org.apache.spark.sql.delta.catalog.DeltaCatalog"' \
-n MyETLPipelinePySpark --executor-count 2 --executor-cores 2 --executor-memory 1664m

后续步骤

要了解如何有效地使用 Delta Lake,请参阅以下文章。

若要使用 azdata 或 Livy 终结点将 Spark 作业提交到 SQL Server 大数据群集,请参阅使用命令行工具提交 Spark 作业

有关 SQL Server 大数据群集 和相关方案的详细信息,请参阅 SQL Server 大数据群集 简介