Objetivo
El principal objetivo de este documento es permitir al cliente utilizar eficientemente el servicio de datos Data Flow, ofreciendo una descripción detallada de sus aspectos técnicos. El propósito es garantizar que el cliente comprenda plenamente la solución, permitiendo su uso seguro y optimizado.
Definiciones
Flujo de datos
En el ecosistema dinámico de ingeniería de datos, el intercambio eficaz de datos entre plataformas es un pilar esencial para el análisis avanzado y la toma de decisiones informadas. Nuestra plataforma innovadora, integrada con soluciones de vanguardia como Databricks, Azure Data Factory y Soda, está a la vanguardia en la simplificación del intercambio de datos. En el centro de esta iniciativa se encuentra Data Flow , una herramienta que emplea el protocolo Delta Sharing para facilitar el intercambio de datos.
En el núcleo de Data Flow reside una biblioteca de Python, diseñada específicamente para optimizar y garantizar el intercambio de datos entre múltiples plataformas. Con la adopción del protocolo Delta Sharing, esta biblioteca se destaca y ofrece una solución eficiente para los ingenieros de datos, respetando las estrictas políticas de gobernanza. Desde facilitar la exportación e importación de datos hasta mantener la integridad durante el intercambio, Data Flow se convierte en un socio indispensable.
En resumen, Data Flow es una capa de abstracción creada por el equipo de Datos de Blip, con el objetivo de facilitar la configuración y gestión del intercambio de datos entre partes. Siendo posible consumir datos Casi en Tiempo Real, en Lotes o Streaming, de forma segura y sencilla. Al compartir el contrato Blip (tenant id), es posible garantizar que los datos sean consistentes y confiables. Finalmente, es posible gestionar excepciones al compartir, con manejo de errores y estrategias de permisos.
Exploraremos algunas funcionalidades clave que permite Data Flow:
Intercambio seguro de datos
Data Flow simplifica el intercambio de datos datos entre sistemas, garantizando que el movimiento de datos no solo sea eficiente, sino que también esté alineado con los estándares de gobernanza. Ya sea que transmita datos en lotes o en tiempo real, Data Flow le proporciona las herramientas que necesita para compartir datos de forma segura y eficiente.
Interfaces de acceso simplificadas
A través del protocolo utilizado, Data Flow propone un flujo simplificado para interactuar con los sistemas de datos. Una solución interoperable compatible con cualquier caso de uso, plataforma y herramienta
Implementación de acuerdos de participación
Mantener la integridad de los datos es esencial y Data Flow emplea funciones avanzadas para garantizar que los conjuntos de datos compartidos sean consistentes y confiables. Al definir e implementar "contratos" de intercambio, la herramienta garantiza el cumplimiento de los datos con formatos y estándares predefinidos, minimizando errores e inconsistencias.
Gestión eficaz de excepciones
El intercambio de datos puede enfrentar eventos imprevistos y excepciones. Data Flow ofrece una solución sólida para gestionar estas excepciones, permitiendo la implementación de estrategias efectivas de manejo de errores, garantizando así que los procesos de intercambio de datos sean continuos y confiables.
Visión y hoja de ruta del producto/servicio
Como servicio de datos, Data Flow, para los clientes, es la mejor manera de consumir datos conversacionales sin procesar de Blip, con una latencia casi en tiempo real (hasta 120 s).
Los datos disponibles provienen de las tablas: mensajes, eventtracks, notificaciones y tickets. El cliente puede acceder a los datos a través de Databricks o cualquier otra solución de consumo de datos disponible a través del protocolo Delta Sharing.
Arquitectura
Delta Sharing
¿Qué es Delta Sharing?
Delta Sharing es un protocolo abierto de Databricks que revoluciona la forma en que las organizaciones comparten e intercambian datos. Ofrece un método simple, seguro y abierto para que los proveedores y consumidores de datos compartan información en tiempo real, independientemente de las plataformas informáticas utilizadas.
Conceptos fundamentales
Proveedor / Proveedor de datos
Entidades que ponen a disposición datos para compartir. En nuestro caso, Blip.
Compartir / Compartir
Un recurso compartido es una agrupación lógica de datos para compartir con destinatarios, con permiso de solo lectura. Un recurso compartido se puede compartir con uno o varios destinatarios. Un destinatario puede acceder a todos los recursos de un recurso compartido. Un recurso compartido puede contener varios esquemas, tablas, notebooks, volúmenes, modelos de machine learning u otros activos de datos que el proveedor quiera compartir.
Destinatario / Destinatario de los datos
Un cliente que tiene un token para acceder a objetos compartidos.
Esquema
Un esquema es una agrupación lógica de tablas. Un esquema puede contener varias tablas.
Tabla
Una tabla es una tabla de Delta Lake o una vista sobre una tabla de Delta Lake.
Servidor compartido
Un servidor que implementa el protocolo.
Diagrama de funcionamiento del protocolo de intercambio delta.
Métodos de intercambio compartido delta
D2D: uso compartido entre entornos de Databricks con acceso a través del Explorador de catálogos, la CLI de Databricks o SQL.
D2O: intercambio de Databricks para código abierto con credenciales y enlaces de activación.
O2O: Compartir entre plataformas de código abierto con servidor de referencia y clientes Delta Sharing.
O2D: uso compartido de código abierto para Databricks mediante un sistema de credenciales basado en tokens.
Uso compartido entre entornos de Databricks (Databricks a Databricks - D2D)
El destinatario proporciona un identificador único vinculado a su espacio de trabajo de Databricks.
El proveedor de datos crea un "compartido" en su propio espacio de trabajo, que incluye tablas, vistas y notebooks.
Se crea un objeto "destinatario" para representar al usuario o grupo que accederá a los datos.
El proveedor otorga acceso al recurso compartido, que aparece en el espacio de trabajo del destinatario.
Los usuarios pueden acceder al recurso compartido a través de varios medios, como el Explorador de catálogos, la CLI de Databricks o comandos SQL.
Compartir Databricks para código abierto (Databricks para Open - D2O)
El proveedor de datos crea objetos "destinatario" y "compartido", como en el método anterior.
Se genera un token y un enlace de activación para el destinatario.
El proveedor envía el enlace de activación al destinatario de forma segura.
El destinatario utiliza este enlace para descargar un archivo de credencial, que se utiliza para establecer una conexión segura con el proveedor y acceder a datos compartidos.
Este método permite leer datos en cualquier plataforma o herramienta.
Compartiendo de Código Abierto a Código Abierto (Open to Open - O2O)
Permite compartir datos entre cualquier plataforma o herramienta de código abierto, sin necesidad de Databricks.
El proveedor de datos puede utilizar un servidor de referencia de código abierto para crear y gestionar recursos compartidos y destinatarios.
El destinatario puede utilizar cualquier cliente Delta Sharing para acceder a los datos compartidos mediante un archivo de credenciales.
Este método permite compartir datos entre diferentes nubes y regiones, con una configuración y un mantenimiento mínimos.
Uso compartido de código abierto para Databricks (abierto a Databricks - O2D)
Permite compartir datos y modelos de IA más allá del ecosistema de Databricks.
Utiliza un sistema de credenciales basado en tokens, lo que permite a los proveedores de datos compartir activos con cualquier usuario, independientemente del acceso a Databricks.
Los ejemplos incluyen compartir datos de Oracle a Databricks.
A pesar de su apertura, Delta Sharing garantiza una seguridad y una gobernanza sólidas.
Modalidades de intercambio con Delta Sharing
GUÍA DE CONEXIÓN
Uso en Databricks
Por defecto, el cliente debe localizar el recurso compartido “deltashare_core” (u otro si es un recurso compartido personalizado) a través del catálogo, en la pestaña “Delta Sharing”, dentro de la sección “Compartido conmigo”, como se muestra en las imágenes a continuación. Debe crear un catálogo a partir del recurso compartido. Luego puede leer los datos utilizando varias herramientas disponibles para los usuarios de Databricks.
Descargar enlace de activación
El destinatario que reciba el enlace de activación debe descargar el archivo de credenciales localmente en formato JSON. Tenga en cuenta que, por razones de seguridad, el archivo de credenciales solo se puede descargar una vez y caducará después de la primera descarga.
Para determinadas tecnologías, como Tableau, además del enlace URL, es posible que deba cargar este archivo de credenciales. Para algunas otras, es posible que se requiera un "token de portador" u otras credenciales contenidas en este archivo.
Uso de archivo de credenciales en Python/Notebooks
Una vez descargado el archivo de credenciales, se puede utilizar en varias plataformas de portátiles, como Jupyter y Databricks, para acceder a datos compartidos almacenados en data frames.
Para habilitar esta funcionalidad en su computadora portátil, ejecute los siguientes comandos para instalar e importar el cliente Delta Sharing. Alternativamente, puede optar por instalarlo desde PyPi buscando "delta-sharing-server" e instalando el paquete "delta-sharing".
Después de la instalación, puede usar el archivo de perfil de credenciales descargado previamente para enumerar y acceder a todas las tablas compartidas en su entorno de notebook:
##Instale el paquete Delta Sharing Python
!pip install delta-sharing
##Importar bibliotecas Delta Sharing
import delta_sharing
##Configuración del Cliente para acceder al Archivo de Credenciales
##Esta parte se puede realizar localmente o almacenarse en un entorno externo.
config_path = "C:/Users/dummy_user/shares/config.share"
client = delta_sharing.SharingClient(config_path)
Listado de conjuntos de datos disponibles
Ahora que el cliente ha sido configurado, puede consultar los conjuntos de datos disponibles dentro de su Flujo de datos. Puede hacer esto simplemente llamando al método list_all_tables() del objeto SharingClient que acaba de crear.
En el siguiente ejemplo, un conjunto de datos llamado incomings_schema.records , se encuentra dentro de incomings_share.
Cada objeto Tabla que aparece en esta lista a continuación es una tabla/conjunto de datos diferente al que tiene acceso.
##Visualización de conjuntos de datos disponibles
print(client.list_all_tables())
## Resultado
[Table(name='records', share='incomings_share', schema='incomings_schema')]
Accediendo a los datos
Para acceder y utilizar datos de un conjunto de datos a través de Data Flow, es necesario cargar los datos en la sesión de Python, que puede ser a través de pandas DataFrame o Apache Spark DataFrame, según su conveniencia.
La dirección completa de un conjunto de datos se compone de tres partes distintas.
Primero está la ruta a su archivo de credenciales (es decir, el archivo config.share ).
La segunda parte es un carácter hashtag (#), que actúa como separador entre la primera y la tercera parte de esta dirección completa.
Luego, la tercera parte es el nombre completo del conjunto de datos, el cual se compone de tres partes separadas por puntos, que son: el nombre del recurso compartido, el nombre del esquema y el nombre del conjunto de datos (o el "nombre de la tabla", si prefiere llamarlo así).
Por lo tanto, el nombre completo de un conjunto de datos toma la forma: <nombre-compartido>.<nombre-esquema>.<nombre-tabla>.
Retomando al ejemplo anterior, tenemos acceso a un solo conjunto de datos, llamado registros, que está dentro del esquema incomings_schema y comparte el esquema incomings_share . Por lo tanto, el nombre completo de este conjunto de datos sería incomings_share.incomings_schema.records.
Como ya tenemos la ruta a nuestro archivo de credenciales, la dirección completa de este conjunto de datos sería:
#Configuración de la Ruta de Acceso a Datos
config_path = "C:/Users/dummy_user/shares/config.share"
table_name = "incomings_share.incomings_schema.records"
table_address = config_path + "#" + table_name
print(table_address)
##Resultado
C:/Users/dummy_user/shares/config.share#incomings_share.incomings_schema.records
Cargando datos en pandas
Para hacer esto, puede usar el método load_as_pandas() de la biblioteca delta_sharing . Todo lo que necesita hacer es proporcionar la dirección completa de este conjunto de datos al método.
# Importar usando Pandas
import delta_sharing
config_path = "C:/Users/dummy_user/shares/config.share"
table_name = "incomings_share.incomings_schema.records"
table_address = config_path + "#" + table_name
table = delta_sharing.load_as_pandas(table_address)
print(table)
##Resultado
date datetime id value
0 2024-05-15 2024-05-15 15:12:20.680756 1 3200
1 2024-05-15 2024-05-15 15:12:54.680769 2 1550
2 2024-05-15 2024-05-15 15:06:14.680772 3 8700
3 2024-05-15 2024-05-15 15:13:08.680774 4 5800
Cargando datos en Apache Spark
Si lo prefiere, puede cargar el conjunto de datos en Apache Spark cambiando el método utilizado a load_as_spark() . La entrada a este método es la misma que en load_as_pandas() , es decir, la dirección completa del conjunto de datos al que intenta acceder.
#Importar usando Apache Spark
import delta_sharing
config_path = "C:/Users/dummy_user/shares/config.share"
table_address = config_path + "#incomings_share.incomings_schema.records"
table = delta_sharing.load_as_spark(table_address)
table.show()
##Resultado
+----------+--------------------+---+-----+
| date| datetime| id|value|
+----------+--------------------+---+-----+
|2024-05-15|2024-05-15 15:12:...| 2| 1550|
|2024-05-15|2024-05-15 15:06:...| 3| 8700|
|2024-05-15|2024-05-15 15:13:...| 4| 5800|
|2024-05-15|2024-05-15 15:12:...| 1| 3200|
+----------+--------------------+---+-----+
Uso en plataformas de informes
Además, tiene la opción de utilizar plataformas de informes conocidas como Power BI para acceder a sus tablas compartidas. En el contexto de Power BI, conectarse a una fuente Delta Sharing es un proceso muy práctico. Puede lograr esto seleccionando "Delta Sharing" en las opciones de orígenes de datos disponibles de Power BI y haciendo clic en el botón Conectar.
Enlaces de soporte
Para más detalles sobre cómo conectarse y consumir datos, puede consultar la Documentación del Proyecto en Github, a través del siguiente enlace:
Git Hub - Delta Sharing - Acceso a datos compartidos
Para obtener más detalles sobre el protocolo utilizado en Data Flow:
Delta Sharing: un estándar abierto para compartir datos de forma segura
Intercambio de datos | Databricks
Intercambio de datos: ¿Qué hay de nuevo?
Para obtener más información, acceda a la discusión sobre el tema en nuestra comunidad o los videos en nuestro canal. 😃