En este tutorial se explica cómo conectar una tabla o una vista de BigQuery para leer y escribir datos desde un cuaderno de Databricks. Los pasos se describen con la Google Cloud consola y los espacios de trabajo de Databricks.
También puedes seguir estos pasos con las herramientas de línea de comandos gcloud
y databricks
, aunque no se explican en este tutorial.
Databricks en Google Cloud es un entorno de Databricks alojado en Google Cloud, que se ejecuta en Google Kubernetes Engine (GKE) y proporciona integración integrada con BigQuery y otras tecnologías de Google Cloud . Si no conoces Databricks, consulta el vídeo Introduction to Databricks Unified Data Platform (Introducción a la plataforma de datos unificada de Databricks) para obtener una descripción general de la plataforma de lakehouse de Databricks.
Objetivos
- Configura Google Cloud para conectarte con Databricks.
- Implementa Databricks en Google Cloud.
- Consultar BigQuery desde Databricks.
Costes
En este tutorial se usan componentes facturables de la consola de Google Cloud , como BigQuery y GKE. Se aplican los precios de BigQuery y los precios de GKE. Para obtener información sobre los costes asociados a una cuenta de Databricks que se ejecute en Google Cloud, consulta la sección Configurar tu cuenta y crear un espacio de trabajo de la documentación de Databricks.
Antes de empezar
Antes de conectar Databricks con BigQuery, sigue estos pasos:
- Habilita la API Storage de BigQuery.
- Crea una cuenta de servicio para Databricks.
- Crea un segmento de Cloud Storage para el almacenamiento temporal.
Habilitar la API Storage de BigQuery
La API Storage de BigQuery está habilitada de forma predeterminada en todos los proyectos nuevos en los que se usa BigQuery. En el caso de los proyectos que no tengan la API habilitada, sigue estas instrucciones:
En la Google Cloud consola, ve a la página API Storage de BigQuery.
Confirme que la API Storage de BigQuery esté habilitada.
Crear una cuenta de servicio para Databricks
A continuación, crea una cuenta de servicio de gestión de identidades y accesos (IAM) para permitir que un clúster de Databricks ejecute consultas en BigQuery. Te recomendamos que le concedas a esta cuenta de servicio los privilegios mínimos necesarios para llevar a cabo sus tareas. Consulta Roles y permisos de BigQuery.
En la Google Cloud consola, ve a la página Cuentas de servicio.
Haz clic en Crear cuenta de servicio, asigna un nombre a la cuenta de servicio
databricks-bigquery
, introduce una breve descripción, comoDatabricks tutorial service account
, y haz clic en Crear y continuar.En Conceder a esta cuenta de servicio acceso al proyecto, especifica los roles de la cuenta de servicio. Para dar permiso a la cuenta de servicio para leer datos con el espacio de trabajo de Databricks y la tabla de BigQuery del mismo proyecto, específicamente sin hacer referencia a una vista materializada, asigna los siguientes roles:
- Usuario con acceso a sesiones de lectura de BigQuery
- Lector de datos de BigQuery
Para conceder permiso para escribir datos, asigna los siguientes roles:
- Usuario de tareas de BigQuery
- Editor de datos de BigQuery
Anota la dirección de correo de tu nueva cuenta de servicio para consultarla en pasos posteriores.
Haz clic en Listo.
Crea un segmento de Cloud Storage
Para escribir en BigQuery, el clúster de Databricks necesita acceso a un segmento de Cloud Storage para almacenar en búfer los datos escritos.
En la Google Cloud consola, ve al Navegador de Cloud Storage.
Haz clic en Crear segmento para abrir el cuadro de diálogo Crear segmento.
Especifica un nombre para el bucket que se usará para escribir datos en BigQuery. El nombre del segmento debe ser único a nivel global. Si especificas un nombre de segmento que ya existe, Cloud Storage responderá con un mensaje de error. Si esto ocurre, especifica otro nombre para tu contenedor.
En este tutorial, usa la configuración predeterminada de la ubicación de almacenamiento, la clase de almacenamiento, el control de acceso y los ajustes avanzados.
Haz clic en Crear para crear el segmento de Cloud Storage.
Haz clic en Permisos, en Añadir y, a continuación, especifica la dirección de correo de la cuenta de servicio que has creado para acceder a Databricks en la página Cuentas de servicio.
Haz clic en Seleccionar un rol y añade el rol Administrador de almacenamiento.
Haz clic en Guardar.
Desplegar Databricks en Google Cloud
Sigue estos pasos para preparar la implementación de Databricks en Google Cloud.
- Para configurar tu cuenta de Databricks, sigue las instrucciones de la documentación de Databricks, Configurar tu cuenta de Databricks on Google Cloud.
- Después de registrarte, consulta más información sobre cómo gestionar tu cuenta de Databricks.
Crear un espacio de trabajo, un clúster y un cuaderno de Databricks
En los pasos que se incluyen a continuación se describe cómo crear un espacio de trabajo de Databricks, un clúster y un cuaderno de Python para escribir código que acceda a BigQuery.
Confirma los requisitos previos de Databricks.
Crea tu primer espacio de trabajo. En la consola de la cuenta de Databricks, haz clic en Crear espacio de trabajo.
Especifica
gcp-bq
en Nombre del espacio de trabajo y selecciona tu región.Para determinar el Google Cloud ID de tu proyecto, ve a la Google Cloud consola y copia el valor en el campo Google Cloud ID de proyecto.
Haz clic en Guardar para crear tu espacio de trabajo de Databricks.
Para crear un clúster de Databricks con Databricks Runtime 7.6 o una versión posterior, en la barra de menú de la izquierda, selecciona Clústeres y, a continuación, haz clic en Crear clúster en la parte superior.
Especifica el nombre y el tamaño del clúster, haz clic en Opciones avanzadas y especifica la dirección de correo de tu cuenta de servicio. Google Cloud
Haz clic en Crear clúster.
Para crear un cuaderno de Python para Databricks, sigue las instrucciones de Crear un cuaderno.
Consultar BigQuery desde Databricks
Con la configuración anterior, puede conectar Databricks con BigQuery de forma segura. Databricks usa una bifurcación del adaptador de Google Spark de código abierto para acceder a BigQuery.
Databricks reduce la transferencia de datos y acelera las consultas al enviar automáticamente a BigQuery determinados predicados de consulta, como el filtrado de columnas anidadas. Además, la función añadida para ejecutar primero una consulta de SQL en BigQuery con la API query()
reduce el tamaño de la transferencia del conjunto de datos resultante.
En los pasos que se incluyen a continuación se describe cómo acceder a un conjunto de datos de BigQuery y escribir tus propios datos en BigQuery.
Acceder a un conjunto de datos público en BigQuery
BigQuery proporciona una lista de conjuntos de datos públicos disponibles. Para consultar el conjunto de datos de Shakespeare de BigQuery, que forma parte de los conjuntos de datos públicos, sigue estos pasos:
Para leer la tabla de BigQuery, usa el siguiente fragmento de código en tu cuaderno de Databricks.
table = "bigquery-public-data.samples.shakespeare" df = spark.read.format("bigquery").option("table",table).load() df.createOrReplaceTempView("shakespeare")
Ejecuta el código pulsando
Shift+Return
.Ahora puedes consultar tu tabla de BigQuery a través de Spark DataFrame (
df
). Por ejemplo, usa lo siguiente para mostrar las tres primeras filas del DataFrame:df.show(3)
Para consultar otra tabla, actualiza la variable
table
.Una de las características principales de los cuadernos de Databricks es que puedes combinar celdas de diferentes lenguajes, como Scala, Python y SQL, en un mismo cuaderno.
La siguiente consulta SQL te permite visualizar el recuento de palabras en Shakespeare después de ejecutar la celda anterior que crea la vista temporal.
%sql SELECT word, SUM(word_count) AS word_count FROM words GROUP BY word ORDER BY word_count DESC LIMIT 12
La celda de arriba ejecuta una consulta de Spark SQL en el dataframe de tu clúster de Databricks, no en BigQuery. La ventaja de este enfoque es que el análisis de datos se realiza a nivel de Spark, no se emiten más llamadas a la API de BigQuery y no se incurre en costes adicionales de BigQuery.
También puedes delegar la ejecución de una consulta SQL en BigQuery con la API
query()
y optimizarla para reducir el tamaño de transferencia del marco de datos resultante. A diferencia del ejemplo anterior, en el que el procesamiento se hizo en Spark, si usas este enfoque, se aplicarán los precios y las optimizaciones de consultas para ejecutar la consulta en BigQuery.En el ejemplo siguiente se usa Scala, la API
query()
y el conjunto de datos público de Shakespeare en BigQuery para calcular las cinco palabras más comunes en las obras de Shakespeare. Antes de ejecutar el código, debe crear un conjunto de datos vacío en BigQuery llamadomdataset
al que pueda hacer referencia el código. Para obtener más información, consulta el artículo sobre cómo escribir datos en BigQuery.%scala // public dataset val table = "bigquery-public-data.samples.shakespeare" // existing dataset where the Google Cloud user has table creation permission val tempLocation = "mdataset" // query string val q = s"""SELECT word, SUM(word_count) AS word_count FROM ${table} GROUP BY word ORDER BY word_count DESC LIMIT 10 """ // read the result of a GoogleSQL query into a DataFrame val df2 = spark.read.format("bigquery") .option("query", q) .option("materializationDataset", tempLocation) .load() // show the top 5 common words in Shakespeare df2.show(5)
Para ver más ejemplos de código, consulta el notebook de ejemplo de Databricks BigQuery.
Escribir datos en BigQuery
Las tablas de BigQuery se encuentran en conjuntos de datos. Antes de poder escribir datos en una tabla de BigQuery, debe crear un conjunto de datos en BigQuery. Para crear un conjunto de datos para un cuaderno de Python de Databricks, sigue estos pasos:
Ve a la página de BigQuery en la Google Cloud consola.
Abre la opción
Acciones, haz clic en Crear conjunto de datos y, a continuación, ponle un nombretogether
.En el cuaderno de Python de Databricks, crea un dataframe de Spark sencillo a partir de una lista de Python con tres entradas de cadena mediante el siguiente fragmento de código:
from pyspark.sql.types import StringType mylist = ["Google", "Databricks", "better together"] df = spark.createDataFrame(mylist, StringType())
Añade otra celda al cuaderno para escribir el dataframe de Spark del paso anterior en la tabla de BigQuery
myTable
del conjunto de datostogether
. La tabla se crea o se sobrescribe. Usa el nombre del cubo que has especificado antes.bucket = YOUR_BUCKET_NAME table = "together.myTable" df.write .format("bigquery") .option("temporaryGcsBucket", bucket) .option("table", table) .mode("overwrite").save()
Para verificar que has escrito los datos correctamente, consulta y muestra tu tabla de BigQuery a través del DataFrame de Spark (
df
):display(spark.read.format("bigquery").option("table", table).load)
Limpieza
Para evitar que los recursos utilizados en este tutorial se cobren en tu cuenta de Google Cloud, elimina el proyecto que contiene los recursos o conserva el proyecto y elimina los recursos.
Antes de eliminar Databricks, crea siempre una copia de seguridad de tus datos y cuadernos. Para limpiar y eliminar por completo Databricks, cancela tu suscripción a Databricks en la consolaGoogle Cloud y elimina los recursos relacionados que hayas creado en la consolaGoogle Cloud .
Si eliminas un espacio de trabajo de Databricks, es posible que no se eliminen los dos segmentos de Cloud Storage con los nombres databricks-WORKSPACE_ID
y databricks-WORKSPACE_ID-system
que creó Databricks si los segmentos de Cloud Storage no están vacíos. Después de eliminar el espacio de trabajo, puedes eliminar esos objetos manualmente en laGoogle Cloud consola de tu proyecto.
Siguientes pasos
En esta sección se incluye una lista de documentos y tutoriales adicionales:
- Consulta los detalles de la prueba gratuita de Databricks.
- Consulta información sobre Databricks en Google Cloud.
- Consulta información sobre Databricks BigQuery.
- Lea el anuncio del blog sobre la compatibilidad de BigQuery con Databricks.
- Consulta información sobre las notebooks de ejemplo de BigQuery.
- Consulta información sobre el proveedor de Terraform para Databricks en Google Cloud.
- Lee el blog de Databricks, donde encontrarás más información sobre temas de ciencia de datos y conjuntos de datos.