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.
- La versión de Spark en Data Flow debe ser 3.2.1 (o posterior).
- Utilice el formato delta.
Cargar Delta Lake
Siga estos pasos para cargar Delta Lake y utilizarlo con Data Flow.
spark.oracle.deltalake.version
, para especificar qué versión de Delta Lake utilizar. Defínalo en uno de los siguientes valores: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. |
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.
- delta-storage-3.1.0.jar
- delta-spark_2.12-3.1.0.jar
- delta-contribuye_2.12-3.1.0.jar
- Para aplicaciones Java o Scala, proporcione la dependencia de Delta Lake 3.1.0 desde el repositorio maven:O bien, para aplicaciones Python, empaquete la biblioteca Delta Lake y proporciónela a la aplicación.
<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>
- 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
- delta-core_2.12-2.0.1.jar
- delta-contribuye_2.12-2.0.1.jar
- delta-storage-2.0.1.jar
- Para aplicaciones Java o Scala, proporcione la dependencia de Delta Lake 2.0.1 desde el repositorio maven:O bien, para aplicaciones Python, empaquete la biblioteca Delta Lake y proporciónela a la aplicación.
<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>
- 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
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.