Compartir vía


Conector de Spark para el Data Warehouse de Microsoft Fabric Synapse

El conector de Spark para el Data Warehouse de Microsoft Fabric Synapse permite a los desarrolladores y científicos de datos de Spark acceder a los datos y trabajar con datos de un almacén y del punto de conexión de análisis SQL del almacén de lago. El conector ofrece las siguientes capacidades:

  • Puede trabajar con datos de un almacén o de un punto de conexión de análisis SQL en el mismo espacio de trabajo o en varios espacios de trabajo.
  • El punto de conexión del análisis SQL de una instancia de Lakehouse se detecta automáticamente en función del contexto del área de trabajo.
  • El conector cuenta con una API de Spark simplificada, limita la complejidad subyacente y funciona con una sola línea de código.
  • Mientras accede a una tabla o una vista, el conector mantiene los modelos de seguridad definidos en el nivel del motor de SQL. Estos modelos incluyen seguridad de nivel de objeto (OLS), seguridad de nivel de fila (RLS) y seguridad de nivel de columna (CLS).
  • El conector viene preinstalado en tiempo de ejecución de Fabric, lo que elimina la necesidad de realizar una instalación independiente.

Nota:

El conector está actualmente en versión preliminar. Para obtener más información, consulte el apartado Limitaciones actuales más adelante en este artículo.

Autenticación

La autenticación de Microsoft Entra es un enfoque de autenticación integrada. Los usuarios pueden iniciar sesión en el área de trabajo de Microsoft Fabric y sus credenciales se pasan automáticamente al motor de SQL para la autenticación y autorización. Las credenciales se asignan automáticamente y no es necesario que los usuarios proporcionen opciones de configuración específicas.

Permisos

Para conectarse al motor de SQL, los usuarios necesitan tener, al menos, permiso de lectura (similar al permiso CONNECT en SQL Server) en el almacén o en el punto de conexión de análisis SQL (nivel de elemento). Los usuarios también deben tener permisos pormenorizados de nivel de objeto para leer datos de tablas o de vistas específicas. Para obtener más información, consulte Seguridad para el almacenamiento de datos en Microsoft Fabric.

Plantillas de código y ejemplos

Utilice una firma de método

El siguiente comando muestra la firma de método synapsesql para la solicitud de lectura. El argumento de tres partes tableName es necesario para acceder a tablas o vistas desde un almacenamiento y el punto de conexión de análisis SQL de una instancia del almacén de lago. Actualice el argumento con los siguientes nombres, en función de su escenario:

  • Parte 1: Nombre del almacén o del almacén de lago.
  • Parte 2: Nombre del esquema.
  • Parte 3: Nombre de una tabla o vista.
synapsesql(tableName:String="<Part 1.Part 2.Part 3>") => org.apache.spark.sql.DataFrame

Lectura de datos dentro de la misma área de trabajo

Importante

Ejecute estas instrucciones de importación al principio del cuaderno o antes de empezar a usar el conector:

import com.microsoft.spark.fabric.tds.implicits.read.FabricSparkTDSImplicits._

import org.apache.spark.sql.functions._

El código siguiente es un ejemplo que sirve para leer datos de una tabla o vista en un dataframe de Spark:

val df = spark.read.synapsesql("<warehouse/lakehouse name>.<schema name>.<table or view name>")

El código siguiente es un ejemplo que sirve para leer datos de una tabla o vista en un dataframe de Spark con un límite de recuento de filas de 10:

val df = spark.read.synapsesql("<warehouse/lakehouse name>.<schema name>.<table or view name>").limit(10)

El código siguiente es un ejemplo que sirve para leer datos de una tabla o vista en un dataframe de Spark después de aplicar un filtro:

val df = spark.read.synapsesql("<warehouse/lakehouse name>.<schema name>.<table or view name>").filter("column name == 'value'")

El código siguiente es un ejemplo que sirve para leer datos de una tabla o vista en un dataframe de Spark solo para las columnas seleccionadas:

val df = spark.read.synapsesql("<warehouse/lakehouse name>.<schema name>.<table or view name>").select("column A", "Column B")

Lectura de datos entre áreas de trabajo

Para acceder y leer datos desde un almacén o un almacén de lago entre áreas de trabajo, puede especificar el id. del área de trabajo donde existe el almacén o el almacén de lago. Esta línea proporciona un ejemplo de lectura de datos de una tabla o vista en un dataframe de Spark desde el almacén o el almacén de lago según el id. de área de trabajo especificado:

import com.microsoft.spark.fabric.Constants
val df = spark.read.option(Constants.WorkspaceId, "<workspace id>").synapsesql("<warehouse/lakehouse name>.<schema name>.<table or view name>")

Nota:

Al ejecutar el cuaderno, el conector busca de manera predeterminada el almacén o el almacén de lago especificados en el área de trabajo del almacén de lago adjunto al cuaderno. Para hacer referencia a un almacén o a un almacén de lago desde otra área de trabajo, especifique el id. del área de trabajo.

Uso de datos materializados entre celdas y lenguajes

Se puede usar la API createOrReplaceTempView del dataframe de Spark para acceder a los datos capturados en una celda o en Scala (después de registrarlos como una vista temporal) mediante otra celda de Spark SQL o PySpark. Estas líneas de código proporcionan un ejemplo para leer datos de una tabla o vista en un dataframe de Spark en Scala y usar estos datos en Spark SQL y PySpark:

%%spark
spark.read.synapsesql("<warehouse/lakehouse name>.<schema name>.<table or view name>").createOrReplaceTempView("<Temporary View Name>")

Cambie la preferencia de lenguaje en el cuaderno o en el nivel de celda a Spark SQL y capture los datos de la vista temporal registrada:

%%sql
SELECT * FROM <Temporary View Name> LIMIT 100

A continuación, cambie la preferencia de lenguaje en el cuaderno o en el nivel de celda a PySpark (Python) y capture los datos de la vista temporal registrada:

%%pyspark
df = spark.read.table("<Temporary View Name>")

Cree una tabla de almacén de lago basada en los datos del almacén

Estas líneas de código proporcionan un ejemplo para leer datos de una tabla o vista en un dataframe de Spark en Scala y usarlos para crear una tabla de almacén de lago:

val df = spark.read.synapsesql("<warehouse/lakehouse name>.<schema name>.<table or view name>")
df.write.format("delta").saveAsTable("<Lakehouse table name>")

Solución de problemas

Al finalizar, el fragmento de código de respuesta de lectura aparece en la salida de la celda. Cualquier error en la celda actual también cancelará las ejecuciones de celdas posteriores del cuaderno. La información detallada del error está disponible en los registros de la aplicación Spark.

Limitaciones actuales

Actualmente, el conector:

  • Admite la recuperación de datos de puntos de conexión de los almacenes de Fabric y análisis SQL de elementos de almacén de lago.
  • Solo admite Scala.
  • No admite consultas personalizadas ni paso a través de consultas.
  • No implementa la optimización delegada.
  • Conserva la firma de uso como la que se incluye con Apache Spark para Azure Synapse Analytics para mantener la coherencia. Sin embargo, no es compatible con versiones anteriores para conectarse y trabajar con el grupo de SQL dedicado de Azure Synapse Analytics.