Compartir a través de


Delta Lake en Clústeres de macrodatos de SQL Server

Se aplica a: SQL Server 2019 (15.x)

Important

Los clústeres de macrodatos de Microsoft SQL Server 2019 se retiran. La compatibilidad con clústeres de macrodatos de SQL Server 2019 finalizó a partir del 28 de febrero de 2025. Para obtener más información, consulte la entrada de blog del anuncio y las opciones de macrodatos en la plataforma de Microsoft SQL Server.

En esta guía, obtendrá información sobre lo siguiente:

  • Los requisitos y las funcionalidades de Delta Lake en los Clústeres de macrodatos de SQL Server.
  • Cómo cargar bibliotecas de Delta  Lake en los clústeres CU12 para usarlas con sesiones y trabajos de Spark 2.4.

Introduction

Delta Lake, de Linux Foundation, es una capa de almacenamiento de código abierto que ofrece transacciones ACID (atomicidad, coherencia, aislamiento y durabilidad) para cargas de trabajo de macrodatos de Apache Spark. Para obtener más información sobre Delta Lake, consulte:

Delta Lake en Clústeres de macrodatos de SQL Server CU13 y posteriores (Spark 3)

Delta Lake está instalado y configurado de forma predeterminada en Clústeres de macrodatos de SQL Server CU13 y posteriores. No se requiere ninguna otra acción.

En este artículo se trata la configuración de Delta Lake en Clústeres de macrodatos de SQL Server CU12 y posteriores.

Configuración de Delta Lake en clústeres de macrodatos de SQL Server CU12 y posteriores (Spark 2.4)

En Clústeres de macrodatos de SQL Server CU12 o posteriores, es posible cargar bibliotecas de Delta Lake mediante la característica Administración de la biblioteca de Spark.

Note

Como regla general, use la biblioteca compatible más reciente. El código de esta guía se ha probado con Delta Lake 0.6.1 en Clústeres de macrodatos de SQL Server CU12. Delta Lake 0.6.1 es compatible con Apache Spark 2.4.x, pero las versiones posteriores no lo son. Los ejemplos se proporcionan tal cual, no como una declaración de compatibilidad.

Configuración de la biblioteca de Delta Lake y de las opciones de Spark

Configure las bibliotecas de Delta Lake en la aplicación antes de enviar los trabajos. Se necesita la biblioteca siguiente:

  • delta-core: esta biblioteca principal habilita la compatibilidad con Delta Lake.

La biblioteca debe tener como destino Scala 2.11 y Spark 2.4.7. Este requisito de Clústeres de macrodatos de SQL Server es aplicable a la actualización acumulativa 9 (CU9) de SQL Server 2019 o versiones posteriores.

También es necesario configurar Spark para habilitar los comandos de Spark SQL específicos de Delta Lake y la integración del metastore. En el ejemplo siguiente se muestra la manera en que un cuaderno de Azure Data Studio configuraría la compatibilidad con 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"
    }
}

Ubicaciones de biblioteca compartidas para trabajos en HDFS

Si varias aplicaciones van a usar la biblioteca de Delta Lake, copie los archivos JAR de biblioteca adecuados en una ubicación compartida en HDFS. Después, todos los trabajos deben hacer referencia a los mismos archivos de biblioteca.

Copie las bibliotecas en la ubicación común:

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"

Instalación dinámica de las bibliotecas

Al enviar los trabajos, se pueden instalar los paquetes de forma dinámica mediante las características de administración de paquetes de Clústeres de macrodatos. Por cada envío de trabajo, se aplica una penalización del tiempo de inicio del trabajo debido a las descargas periódicas de los archivos de biblioteca.

Envío del trabajo de Spark mediante azdata

En el ejemplo siguiente se usan los archivos JAR de biblioteca compartida en HDFS:

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

En este ejemplo se usa la administración dinámica de paquetes para instalar las dependencias:

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

Next steps

Para obtener información sobre cómo usar Delta Lake de forma eficaz, consulte los artículos siguientes.

Para enviar trabajos de Spark a Clústeres de macrodatos de SQL Server mediante puntos de conexión de azdata o Livy, vea Envío de trabajos de Spark mediante herramientas de línea de comandos.

Para obtener más información sobre Clústeres de macrodatos de SQL Server y escenarios relacionados, vea Presentación de Clústeres de macrodatos de SQL Server.