Nota
L'accés a aquesta pàgina requereix autorització. Pots provar d'iniciar sessió o canviar de directori.
L'accés a aquesta pàgina requereix autorització. Pots provar de canviar directoris.
Databricks admite la sintaxis de combinación estándar ANSI. En este artículo se describen las diferencias entre las combinaciones con el procesamiento por lotes y el procesamiento de flujos.
Nota:
Databricks también admite la sintaxis estándar para los operadores de conjunto UNION, INTERSECT y EXCEPT. Consulte Operadores de conjunto.
Diferencias entre combinaciones por lotes y de flujos
Las combinaciones en Azure Databricks son con estado o sin estado.
Todas las combinaciones por lotes son combinaciones sin estado. Los resultados procesan inmediatamente y reflejan los datos en el momento en que se ejecuta la consulta. Cada vez que se ejecuta la consulta, los nuevos resultados se calculan en función de los datos de origen especificados. Consulte Combinaciones por lotes.
Las combinaciones entre dos orígenes de datos de flujos tienen estado. En combinaciones con estado, Azure Databricks realiza un seguimiento de la información sobre los orígenes de datos y los resultados y actualiza los resultados de forma iterativa. Las combinaciones con estado pueden proporcionar soluciones eficaces para el procesamiento de datos en línea, pero pueden ser difíciles de implementar de forma eficaz. Tienen semántica operativa compleja en función del modo de salida, el intervalo de desencadenador y la marca de agua. Consulte Combinaciones de flujo con flujo.
Las combinaciones estáticas de flujo no tienen estado, pero proporcionan una buena opción para combinar un origen de datos incremental (como una tabla de hechos) con un origen de datos estático (por ejemplo, una tabla dimensional que cambia lentamente). En lugar de combinar todos los registros de ambos lados cada vez que se ejecuta una consulta, solo se combinan los registros recién recibidos del origen de streaming con la versión actual de la tabla estática. Consulte Combinaciones estáticas de flujos.
Combinaciones por lotes
Azure Databricks admite la sintaxis de combinación SQL estándar, incluidas las combinaciones internas, externas, semi, anti y cruzadas. Consulte JOIN.
Nota:
Databricks recomienda usar una vista materializada para optimizar el cálculo incremental de los resultados de una combinación interna. Consulte Vistas materializadas.
Combinaciones de flujo con flujo
La combinación de dos orígenes de datos de streaming puede presentar desafíos importantes en la administración de la información de estado y el razonamiento sobre el cálculo y la salida de los resultados. Antes de implementar una combinación de flujo con flujo, Databricks recomienda desarrollar una comprensión sólida de la semántica operativa para el streaming con estado, incluida la forma en que las marcas de agua afectan a la administración del estado. Vea los artículos siguientes:
- ¿Qué es el streaming con estado?
- Aplicación de marcas de agua para controlar los umbrales de procesamiento de datos
- Combinaciones de streaming con streaming
Databricks recomienda especificar marcas de agua en ambos lados de todas las uniones de flujos de transmisión. Se admiten los siguientes tipos de combinación:
- Combinaciones internas
- Combinaciones externas izquierdas
- Combinaciones externas derechas
- Combinaciones externas completas
- Semicombinaciones izquierdas
Consulte la documentación de Apache Spark Structured Streaming sobre las combinaciones de secuencias de transmisión.
Combinaciones estáticas de secuencias
Nota:
El comportamiento descrito para las combinaciones estáticas de flujo supone que los datos estáticos se almacenan mediante Delta Lake.
Una combinación de secuencia estática combina la versión válida más reciente de una tabla Delta (los datos estáticos) a una secuencia de datos mediante una combinación sin estado.
Cuando Azure Databricks procesa un microlote de datos en una combinación de secuencia estática, la versión válida más reciente de los datos de la tabla delta estática se une con los registros presentes en el microproceso actual. Dado que la combinación no tiene estado, no es necesario configurar la marca de agua y puede procesar los resultados con baja latencia. Los datos de la tabla delta estática usada en la combinación deben cambiar lentamente.
En el siguiente ejemplo se muestra este patrón:
streamingDF = spark.readStream.table("orders")
staticDF = spark.read.table("customers")
query = (streamingDF
.join(staticDF, streamingDF.customer_id==staticDF.id, "inner")
.writeStream
.option("checkpointLocation", checkpoint_path)
.table("orders_with_customer_info")
)
Sugerencias de combinación en Azure Databricks
Apache Spark permite especificar sugerencias de combinación para combinaciones de rango y sesgadas. Las sugerencias para las combinaciones sesgadas no son necesarias, ya que Azure Databricks optimiza automáticamente estas combinaciones. Consulte Sugerencias
Las sugerencias para las combinaciones de rango pueden ser útiles si el rendimiento de las combinaciones es bajo y está realizando combinaciones de desigualdad. Los ejemplos incluyen la combinación de rango de marcas de tiempo o un rango de ID de clusterización. Consulte Optimización de uniones por rango y Optimizar el rendimiento de unión en Azure Databricks.