Data Flow y Delta Lake

Data Flow soporta Delta Lake por defecto cuando sus aplicaciones ejecutan Spark 3.2.1 o posterior.

Delta Lake le permite crear una arquitectura Lakehouse sobre lagos de datos. Delta Lake proporciona transacciones ACID, manejo escalable de metadatos y unifica el procesamiento de datos por lotes y la transmisión sobre los lagos de datos existentes. Delta Lake 3.1.0 está soportado con el motor de procesamiento Spark 3.5.0 de Data Flow, Delta Lake 2.0.1 y 1.2.1 están soportados con el motor de procesamiento Spark 3.2.1 de Data Flow.

Para utilizar Delta Lake con Data Flow:
  • La versión de Spark en Data Flow debe ser 3.2.1 (o posterior).
  • Utilice el formato delta.
Para obtener más información sobre Delta Lake y su uso, consulte las notas de la versión del Delta Lake y la documentación del Delta Lake.

Cargar Delta Lake

Siga estos pasos para cargar Delta Lake y utilizarlo con Data Flow.

Utilice la propiedad de configuración de Spark, spark.oracle.deltalake.version, para especificar qué versión de Delta Lake utilizar. Defínalo en uno de los siguientes valores:
Valores Spark.oracle.deltalake.version
Versión de Spark Valor de spark.oracle.deltalake.version Binarios cargados
3,5 3.1.0 Delta Lake 3.1.0
3.2.1 2.0.1 Delta Lake 2.0.1
3.2.1 1.2.1 Delta Lake 1.2.1
3,5 3,2 none No hay binarios de Delta Lake cargados, debe proporcionarlos.
Nota

Si no define un valor para spark.oracle.deltalake.version, los binarios de Delta Lake 1.2.1 se cargan por defecto.

Si define spark.oracle.deltalake.version en none, debe proporcionar las bibliotecas de dependencias de Delta Lake como parte del JAR de la aplicación. Puede encontrar más información en la documentación pública de Delta Lake.

Por ejemplo, para cargar Delta Lake 3.1.0, empaquete estas bibliotecas:
  • delta-storage-3.1.0.jar
  • delta-spark_2.12-3.1.0.jar
  • delta-contribuye_2.12-3.1.0.jar
y siga estos pasos:
  1. Para aplicaciones Java o Scala, proporcione la dependencia de Delta Lake 3.1.0 desde el repositorio maven:
    <dependency>
        <groupId>io.delta</groupId>
        <artifactId>delta-spark_2.12</artifactId>
        <version>3.1.0</version>
    </dependency>
    <dependency>
        <groupId>io.delta</groupId>
        <artifactId>delta-contribs_2.12</artifactId>
        <version>3.1.0</version>
    </dependency>
    O bien, para aplicaciones Python, empaquete la biblioteca Delta Lake y proporciónela a la aplicación.
  2. Defina la configuración de Spark para activar Delta Lake:
    spark.delta.logStore.oci.impl -> io.delta.storage.OracleCloudLogStore
    spark.sql.extensions -> io.delta.sql.DeltaSparkSessionExtension
    spark.sql.catalog.spark_catalog -> org.apache.spark.sql.delta.catalog.DeltaCatalog
Por ejemplo, para cargar Delta Lake 2.0.1, empaquete estas bibliotecas:
  • delta-core_2.12-2.0.1.jar
  • delta-contribuye_2.12-2.0.1.jar
  • delta-storage-2.0.1.jar
y siga estos pasos:
  1. Para aplicaciones Java o Scala, proporcione la dependencia de Delta Lake 2.0.1 desde el repositorio maven:
    <dependency>
      <groupId>io.delta</groupId>
      <artifactId>delta-core_2.12</artifactId>
      <version>2.0.1</version>
    </dependency> 
    <dependency>
      <groupId>io.delta</groupId>
      <artifactId>delta-contribs_2.12</artifactId>
      <version>2.0.1</version>
      </dependency>
    O bien, para aplicaciones Python, empaquete la biblioteca Delta Lake y proporciónela a la aplicación.
  2. Defina la configuración de Spark para activar Delta Lake:
    spark.delta.logStore.oci.impl -> io.delta.storage.OracleCloudLogStore
    spark.sql.extensions -> io.delta.sql.DeltaSparkSessionExtension
    spark.sql.catalog.spark_catalog -> org.apache.spark.sql.delta.catalog.DeltaCatalog
Nota

También puede activar Delta Lake en las opciones avanzadas proporcionadas en la consola, al crear una aplicación o ejecutar una aplicación.

Uso de ejemplo de la API de Delta Lake

Ejemplos de uso de la API de Delta Lake con Data Flow

El sistema de Spark de Data Flow soporta el formato delta por defecto. Las API de Delta Lake están disponibles para los lenguajes Java, Python y Scala. Si utiliza API de Python de Delta Lake, utilice el empaquetador de dependencias archive.zip personalizado, incluya el paquete delta-spark, como se describe en Funcionalidad de envío de Spark en Data Flow.

Ejemplos de uso

Java o Scala
spark.read().format("delta").load(<path_to_Delta_table>)
df.write().format("delta").save(<path_to_Delta_table>)
val deltaTable = io.delta.tables.DeltaTable.forPath(spark, <path_to_Delta_table>)
deltaTable.vacuum()
Python
spark.read.format("delta").option("versionAsOf", 1).load(<path_to_Delta_table>)
from delta.tables import *
deltaTable = DeltaTable.forPath(spark, <path_to_Delta_table>)
deltaTable.vacuum()
deltaTable.history()
SQL
spark.sql("CONVERT TO DELTA parquet.`" + <path_to_Parquet_table> + "`");
spark.sql("DESCRIBE HISTORY delta.`" + <path_to_Delta_table> + "`");

Ejemplos

Estos son algunos ejemplos de código que le ayudarán a empezar a utilizar Delta Lake con Data Flow

Puede encontrar ejemplos en la sección de ejemplos de Oracle en GitHub.