Leer datos compartidos mediante El uso compartido de Databricks a Databricks Delta (para destinatarios)

En este artículo se describe cómo leer datos que se han compartido con usted mediante el protocolo Delta Sharing de Databricks a Databricks, en el que Databricks administra una conexión segura para el uso compartido de datos. A diferencia del protocolo Delta Sharing de uso compartido abierto, el protocolo Databricks a Databricks no requiere un archivo de credenciales (seguridad basada en tokens).

El uso compartido de Databricks a Databricks requiere que, como destinatario, tenga acceso a un área de trabajo de Databricks que esté habilitada para el catálogo de Unity.

Si no tiene un área de trabajo de Databricks habilitada para el catálogo de Unity, los datos deben compartirse con usted mediante el protocolo de uso compartido abierto Delta Sharing y este artículo no se aplica a usted. Consulte Lectura de datos compartidos mediante el uso compartido abierto de Delta Sharing (para destinatarios).

¿Cómo puedo hacer que los datos compartidos estén disponibles para mi equipo?

Para leer datos y cuadernos que se han compartido con usted mediante el protocolo de Databricks a Databricks, debe ser un usuario en un área de trabajo de Databricks habilitada para Unity Catalog. Un miembro de su equipo proporciona al proveedor de datos un identificador único para su metastore de Unity Catalog, y el proveedor de datos usa ese identificador para crear una conexión segura compartida con su organización. A continuación, los datos compartidos estarán disponibles para el acceso de lectura en el área de trabajo y las actualizaciones que realiza el proveedor de datos en las tablas, vistas, volúmenes y particiones compartidas se reflejan en el área de trabajo casi en tiempo real.

Nota:

Las actualizaciones de las tablas, vistas y volúmenes de datos compartidos aparecen en el área de trabajo prácticamente en tiempo real. Sin embargo, es posible que los cambios de columna (agregar, cambiar el nombre y eliminar) no se muestren en Catalog Explorer durante un máximo de un minuto. Del mismo modo, los nuevos recursos compartidos y las actualizaciones de los recursos compartidos (como agregar nuevas tablas a un recurso compartido) se almacenan en caché durante un minuto antes de que estén disponibles para que pueda verlos y consultarlos.

Para leer los datos que se han compartido con usted:

  1. Un usuario del equipo busca el recurso compartido (el contenedor de las tablas, vistas y cuadernos que se han compartido con usted) y lo utiliza para crear un catálogo, el contenedor de nivel superior para todos los datos de Unity Catalog de Databricks.
  2. Un usuario del equipo concede o deniega el acceso al catálogo y a los objetos dentro del catálogo (esquemas, tablas, vistas y volúmenes) a otros miembros del equipo.
  3. Puede leer los datos de las tablas, vistas y volúmenes a los que se le ha concedido acceso igual que cualquier otro recurso de datos de Databricks al que tenga acceso de solo lectura (SELECT o READ VOLUME).
  4. Puede obtener una vista previa y clonar cuadernos en el recurso compartido, siempre y cuando tenga el privilegio USE CATALOG en el catálogo.

Permisos necesarios

Para poder enumerar y ver detalles sobre todos los proveedores y recursos compartidos de proveedores, debe ser administrador de metastore o tener el privilegio USE PROVIDER. Otros usuarios solo tienen acceso a los proveedores y recursos compartidos de los que son propietarios.

Para crear un catálogo a partir de un recurso compartido de proveedor, debe ser un administrador de metastore, un usuario que tenga los privilegios CREATE_CATALOG y USE PROVIDER para el metastore de Unity Catalog, o un usuario que tenga tanto el privilegio CREATE_CATALOG como la propiedad del objeto de proveedor.

La capacidad de conceder acceso de solo lectura a los esquemas (bases de datos), tablas, vistas y volúmenes del catálogo creados a partir del recurso compartido sigue la jerarquía de privilegios típica de Unity Catalog. La capacidad de ver cuadernos en el catálogo creado a partir del recurso compartido requiere el privilegio USE CATALOG en el catálogo. Consulte Administración de permisos para los esquemas, tablas y volúmenes de un catálogo de Delta Sharing.

Visualización de proveedores y recursos compartidos

Para empezar a leer los datos compartidos con usted por un proveedor de datos, debe conocer el nombre del proveedor y de los objetos de recurso compartido que se almacenan en el metastore de Unity Catalog una vez que el proveedor haya compartido datos con usted.

El objeto de proveedor representa el metastore de Unity Catalog, la plataforma en la nube y la región de la organización que compartió los datos con usted.

El objeto del recurso compartido representa las tablas, volúmenes y vistas que el proveedor ha compartido con usted.

Visualización de todos los proveedores que han compartido datos con usted

Para ver una lista de proveedores de datos disponibles, puede usar Catalog Explorer, la CLI de Unity Catalog de Databricks o el comando SQL SHOW PROVIDERS en un cuaderno de Azure Databricks o el editor de consultas de Databricks SQL.

Permisos necesarios: debe ser administrador de metastore o tener el privilegio USE PROVIDER. Otros usuarios solo tienen acceso a los proveedores y recursos compartidos de proveedores de los que son propietarios.

Para obtener más información, consulte Visualización de proveedores.

Ver detalles del proveedor

Para ver detalles sobre un proveedor, puede usar Catalog Explorer, la CLI de Unity Catalog de Databricks o el comando SQL DESCRIBE PROVIDER en un cuaderno de Azure Databricks o el editor de consultas de Databricks SQL.

Permisos necesarios: debe ser administrador del metastore, tener el privilegio USE PROVIDER o ser propietario del objeto de proveedor.

Para obtener más información, consulte Visualización de detalles del proveedor.

Visualización de recursos compartidos

Para ver los recursos compartidos que un proveedor ha compartido con usted, puede usar Catalog Explorer, la CLI de Unity Catalog de Databricks o el comando SQL SHOW SHARES IN PROVIDER en un cuaderno de Azure Databricks o el editor de consultas de Databricks SQL.

Permisos necesarios: debe ser administrador del metastore, tener el privilegio USE PROVIDER o ser propietario del objeto de proveedor.

Para obtener más información, consulte Visualización de recursos compartidos que un proveedor ha compartido con usted.

Acceso a datos en una tabla o volumen compartido

Para leer datos en una tabla o volumen compartido:

  1. Un usuario con privilegios debe crear un catálogo a partir del recurso compartido que contiene la tabla o volumen. Puede ser un administrador de metastore, un usuario que tenga los privilegios CREATE_CATALOG y USE PROVIDER para el metastore de Unity Catalog, o un usuario que tenga tanto el privilegio como la propiedad CREATE_CATALOG del objeto de proveedor.
  2. Ese usuario o un usuario con los mismos privilegios deben concederle acceso a la tabla o volumen compartido.
  3. Puede acceder a la tabla o volumen igual que haría con cualquier otro recurso de datos registrado en el metastore de Unity Catalog.

Creación de un catálogo a partir de un recurso compartido

Para que los datos de un recurso compartido sean accesibles para el equipo, debe crear un catálogo a partir del recurso compartido. Para crear un catálogo a partir de un recurso compartido, puede usar Catalog Explorer, la CLI de Unity Catalog de Databricks o comandos SQL en un cuaderno de Azure Databricks o el editor de consultas de Databricks SQL.

Permisos necesarios: debe ser un administrador del metastore, un usuario que tenga tanto los privilegios CREATE_CATALOG como USE PROVIDER para su metastore de Unity Catalog, o un usuario que tenga tanto el privilegio CREATE_CATALOG como la propiedad del objeto proveedor.

Nota:

Si el recurso compartido incluye vistas, debe usar un nombre de catálogo distinto del nombre del catálogo que contiene la vista en la tienda de metadatos del proveedor.

Explorador de catálogos

  1. En el área de trabajo de Azure Databricks, haga clic en el Icono de catálogoCatálogo.
  2. En el panel izquierdo, expanda el menú Delta Sharing y seleccione Compartido conmigo.
  3. En la pestaña Proveedores, seleccione el proveedor.
  4. En la pestaña Recursos compartidos, busque el recurso compartido y haga clic en Crear catálogo en la fila del recurso compartido.
  5. Escriba un nombre para el catálogo y un comentario opcional.
  6. Haga clic en Crear.

Sql

Ejecute el siguiente comando en un cuaderno o en el editor de consultas de Databricks SQL.

CREATE CATALOG [IF NOT EXISTS] <catalog-name>
USING SHARE <provider-name>.<share-name>;

Cli

databricks unity-catalog catalogs create --name <catalog-name> /
                                    --provider <provider-name> /
                                    --share <share-name>

El catálogo creado a partir de un recurso compartido tiene un tipo de catálogo de Delta Sharing. Puede ver el tipo en la página de detalles del catálogo en Catalog Explorer o ejecutando el comando SQL DESCRIBE CATALOG en un cuaderno o una consulta SQL de Databricks. Todos los catálogos compartidos aparecen en Catálogo > compartido en el panel izquierdo del Explorador de catálogos.

Un catálogo de Delta Sharing se puede administrar de la misma manera que los catálogos normales en un metastore de Unity Catalog. Puede ver, actualizar y eliminar un catálogo de Delta Sharing mediante el Catalog Explorer, la CLI de DatabricksSHOW CATALOGS, DESCRIBE CATALOG, ALTER CATALOG y DROP CATALOG con los comandos SQL.

La estructura de espacio de nombres de tres niveles en un catálogo de Delta Sharing creada a partir de un recurso compartido es la misma que la de un catálogo normal de Unity Catalog: catalog.schema.table o catalog.schema.volume.

Los datos de tabla y volumen de un catálogo compartido son de solo lectura, lo que significa que puede realizar operaciones de lectura como:

  • DESCRIBE, SHOWy SELECT para tablas.
  • DESCRIBE VOLUME, LIST <volume-path>, SELECT * FROM <format>.'<volume_path>' y COPY INTO para volúmenes.

Los cuadernos de un catálogo compartido se pueden obtener en vista previa y clonar por cualquier usuario con USE CATALOG en el catálogo.

Los modelos de un catálogo compartido se pueden leer y cargar para la inferencia por parte de cualquier usuario con los siguientes privilegios: EXECUTE privilegios en el modelo registrado, además de USE SCHEMA y privilegios de USE CATALOG en el esquema y catálogo que contiene el modelo.

Administración de permisos para los esquemas, tablas y volúmenes de un catálogo de Delta Sharing

De forma predeterminada, el creador del catálogo es el propietario de todos los objetos de datos de un catálogo de Delta Sharing y puede administrar permisos para cualquiera de ellos.

Los privilegios se heredan hacia abajo, aunque es posible que algunas áreas de trabajo todavía estén en el modelo de seguridad heredado que no proporcionó herencia. Consulte Modelo de herencia. Cualquier usuario que haya concedido el privilegio SELECT en el catálogo tendrá el privilegio SELECT en todos los esquemas y tablas del catálogo a menos que se revoque ese privilegio. Del mismo modo, cualquier usuario que tenga concedido el privilegio READ VOLUME en el catálogo tendrá el privilegio READ VOLUME en todos los volúmenes del catálogo, a menos que se revoque ese privilegio. No se pueden conceder privilegios que concedan acceso de escritura o actualización a un catálogo de Delta Sharing o a objetos de un catálogo de Delta Sharing.

El propietario del catálogo puede delegar la propiedad de los objetos de datos a otros usuarios o grupos, lo que concede a esos usuarios la capacidad de administrar los permisos de objeto y los ciclos de vida.

Para obtener información detallada sobre cómo administrar privilegios en objetos de datos mediante Unity Catalog, consulte Administración de privilegios en Unity Catalog.

Lectura de datos en una tabla compartida

Puede leer datos en una tabla compartida mediante cualquiera de las herramientas disponibles como usuario de Azure Databricks: Catalog Explorer, cuadernos, consultas SQL, la CLI de Databricks y las API de REST de Databricks. Debe tener el privilegio SELECT en la tabla.

Lectura de datos en un volumen compartido

Puede leer datos en un volumen compartido mediante cualquiera de las herramientas disponibles como usuario de Azure Databricks: Catalog Explorer, cuadernos, consultas SQL, la CLI de Databricks y las API REST de Databricks. Debe tener el privilegio READ VOLUME en el volumen.

Carga de un modelo compartido para la inferencia

Para más información sobre cómo cargar un modelo compartido y usarlo para la inferencia por lotes, consulte Modelos de carga para la inferencia.

Consulta de los datos del historial de una tabla

Si el historial se comparte junto con la tabla, puede consultar los datos de la tabla a partir de una versión o marca de tiempo. Requiere Databricks Runtime 12.2 LTS o superior.

Por ejemplo:

SELECT * FROM vaccine.vaccine_us.vaccine_us_distribution VERSION AS OF 3;
SELECT * FROM vaccine.vaccine_us.vaccine_us_distribution TIMESTAMP AS OF "2023-01-01 00:00:00";

Además, si la fuente de distribución de datos modificados (CDF) está habilitada con la tabla, puede consultar la CDF. Se admiten la versión y la marca de tiempo:

SELECT * FROM table_changes('vaccine.vaccine_us.vaccine_us_distribution', 0, 3);
SELECT * FROM table_changes('vaccine.vaccine_us.vaccine_us_distribution', "2023-01-01 00:00:00", "2022-02-01 00:00:00");

Para obtener más información sobre la fuente de distribución de datos modificados, consulte Uso de la fuente de distribución de datos de cambios de Delta Lake en Azure Databricks.

Consulta de una tabla mediante Apache Spark Structured Streaming

Si una tabla se comparte con el historial, puede usarla como origen de Spark Structured Streaming. Requiere Databricks Runtime 12.2 LTS o superior.

Opciones admitidas:

  • ignoreDeletes: omitir las transacciones que eliminan los datos.
  • ignoreChanges: volver a procesar las actualizaciones si los archivos se volvieron a escribir en la tabla de origen debido a una operación de cambio de datos como UPDATE, MERGE INTO, DELETE (dentro de las particiones) o OVERWRITE. Todavía se pueden emitir filas sin cambios. Por tanto, los consumidores de nivel inferior deben ser capaces de controlar los duplicados. Las eliminaciones no se propagan de bajada. ignoreChanges subsumes ignoreDeletes. Por lo tanto, si usa ignoreChanges, el flujo no se interrumpirá mediante eliminaciones o actualizaciones de la tabla de origen.
  • startingVersion: la versión de la tabla compartida desde la que se va a iniciar. El origen de streaming leerá todos los cambios de tabla a partir de esta versión (inclusive).
  • startingTimestamp: marca de tiempo desde la que empezar. El origen de streaming leerá todos los cambios de tabla confirmados en la marca de tiempo o después (inclusive). Ejemplo: "2023-01-01 00:00:00.0"
  • maxFilesPerTrigger: el número de archivos nuevos a considerar en cada microlote.
  • maxBytesPerTrigger: la cantidad de datos que se procesan en cada microlote. Esta opción establece un "máximo flexible", lo que significa que un lote procesa aproximadamente esta cantidad de datos y puede procesar más que el límite para que la consulta de flujo avance en los casos en que la unidad de entrada más pequeña sea mayor que este límite.
  • readChangeFeed: se lee por streaming la fuente de datos modificados de la tabla compartida.

Opciones no admitidas:

  • Trigger.availableNow

Ejemplos de consultas de Structured Streaming

Scala
spark.readStream.format("deltaSharing")
.option("startingVersion", 0)
.option("ignoreChanges", true)
.option("maxFilesPerTrigger", 10)
.table("vaccine.vaccine_us.vaccine_us_distribution")
Python
spark.readStream.format("deltaSharing")\
.option("startingVersion", 0)\
.option("ignoreDeletes", true)\
.option("maxBytesPerTrigger", 10000)\
.table("vaccine.vaccine_us.vaccine_us_distribution")

Si se habilita la fuente de distribución de datos de cambio (CDF) con la tabla, podrá leer el CDF por streaming.

spark.readStream.format("deltaSharing")
.option("readChangeFeed", "true")
.table("vaccine.vaccine_us.vaccine_us_distribution")

Lectura de tablas con vectores de eliminación o asignación de columnas habilitados

Importante

Esta característica está en versión preliminar pública.

Los vectores de eliminación son una característica de optimización de almacenamiento que el proveedor puede habilitar en tablas Delta compartidas. Consulte ¿Qué son los vectores de eliminación?.

Azure Databricks también admite la asignación de columnas para tablas Delta. Consulte Cambio de nombre y eliminación de columnas con la asignación de columnas de Delta Lake.

Si su proveedor compartió una tabla con vectores de eliminación o asignación de columnas habilitados, puede realizar lecturas por lotes en la tabla usando un almacén SQL o un clúster que ejecute Databricks Runtime 14.1 o superior. Las consultas de CDF y streaming requieren Databricks Runtime 14.2 o superior.

Puede realizar consultas por lotes tal como están, ya que pueden resolver automáticamente responseFormat en función de las características de tabla de la tabla compartida.

Para leer una fuente de distribución de datos modificado (CDF) o para realizar consultas de streaming en tablas compartidas con vectores de eliminación o asignación de columnas habilitadas, debe establecer la opción adicional responseFormat=delta.

En los siguientes ejemplos se muestran consultas por lotes, CDF y streaming:

import org.apache.spark.sql.SparkSession

// Batch query
spark.read.format("deltaSharing").table(<tableName>)

// CDF query
spark.read.format("deltaSharing")
  .option("readChangeFeed", "true")
  .option("responseFormat", "delta")
  .option("startingVersion", 1)
  .table(<tableName>)

// Streaming query
spark.readStream.format("deltaSharing").option("responseFormat", "delta").table(<tableName>)

Lectura de vistas compartidas

Importante

Esta característica está en versión preliminar pública.

Nota:

El uso compartido de vistas solo se admite en el uso compartido de Databricks a Databricks.

La lectura de vistas compartidas es la misma que la lectura de tablas compartidas, con estas excepciones:

Requisitos de proceso:

  • Si su cuenta de Azure Databricks es diferente a la del proveedor, debe usar un almacén SQL sin servidor para consultar vistas compartidas.
  • Si el proveedor está en la misma cuenta de Azure Databricks, puede usar cualquier almacén SQL y también un clúster que use el modo de acceso compartido.

Restricciones de vista previa:

No se pueden crear vistas que hagan referencia a vistas compartidas.

Ver restricciones de uso compartido:

No se pueden compartir vistas que hagan referencia a tablas compartidas o vistas compartidas.

Requisitos de nomenclatura:

El nombre del catálogo que se usa para el catálogo compartido que contiene la vista no puede ser el mismo que cualquier catálogo de proveedores que contenga una tabla a la que hace referencia la vista. Por ejemplo, si la vista compartida está contenida en test el catálogo y una de las tablas del proveedor a las que se hace referencia en esa vista se encuentra en el catálogo del test proveedor, la consulta producirá un error de conflicto de espacio de nombres. Vea Creación de un catálogo a partir de un recurso compartido.

Historial y streaming:

No puede consultar el historial ni usar una vista como origen de streaming.

JDBC/ODBC:

Las instrucciones de este artículo se centran en la lectura de datos compartidos mediante interfaces de usuario de Azure Databricks, específicamente la sintaxis y las interfaces del catálogo de Unity. También puede consultar vistas compartidas mediante herramientas de Apache Spark, Python y BI como Tableau y Power BI mediante controladores JDBC/ODBC de Databricks. Para obtener información sobre cómo conectarse mediante los controladores JDBC/ODBC de Databricks, vea Controladores ODBC y JDBC de Databricks.

Lectura de cuadernos compartidos

Para obtener una vista previa y clonar archivos de cuaderno compartidos, puede usar Catalog Explorer.

Permisos necesarios: propietario del catálogo o usuario con el privilegio USE CATALOG en el catálogo creado a partir del recurso compartido.

  1. En el área de trabajo de Azure Databricks, haga clic en Icono de catálogoCatálogo.

  2. En el panel izquierdo, expanda el menú Catálogo, busque y seleccione el catálogo creado en el recurso compartido.

  3. En la pestaña Otros recursos, verá los archivos de bloc de notas compartidos.

  4. Haga clic en el nombre de un archivo de cuaderno compartido para obtener una vista previa.

  5. (Opcional) Haga clic en el botón Clonar para importar el archivo de cuaderno compartido en el área de trabajo.

    1. En el cuadro de diálogo Clonar en, escriba un Nuevo nombre y seleccione la carpeta del área de trabajo en la que quiere clonar el archivo de cuaderno.
    2. Haga clic en Clonar.
    3. Una vez clonado el cuaderno, aparece un cuadro de diálogo para informarle de que se ha clonado correctamente. Haga clic en Mostrar en el editor de cuadernos del cuadro de diálogo para verlo en el editor de cuadernos.

    Consulte Introducción a los cuadernos de Databricks.