Conectarse a Apache Spark
Como administrador de BigQuery, puedes crear una conexión para que los analistas de datos puedan ejecutar procedimientos almacenados de Apache Spark.
Antes de empezar
Habilita la API de conexión de BigQuery.
-
Para obtener los permisos que necesitas para crear una conexión de Spark, pide a tu administrador que te asigne el rol de gestión de identidades y accesos Administrador de conexiones de BigQuery (
roles/bigquery.connectionAdmin
) en el proyecto. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.
- Opcional: Para gestionar los metadatos con Dataproc Metastore, asegúrate de haber creado un servicio de Dataproc Metastore.
- Opcional: Para ver el historial de trabajos mediante las interfaces web del servidor de historial de Spark, asegúrate de haber creado un servidor de historial persistente (PHS) de Dataproc.
Consideraciones de ubicación
Cuando elijas una ubicación para tus datos, ten en cuenta lo siguiente:
Multirregional
Debes especificar Google Cloud recursos ubicados en la misma zona geográfica grande:
Una conexión en la multirregión de EE. UU. de BigQuery puede hacer referencia a un servidor de historial de Spark o a un metastore de Dataproc en cualquier región de la zona geográfica de EE. UU., como
us-central1
,us-east4
ous-west2
.Una conexión en la multirregión de la UE de BigQuery puede hacer referencia a un servidor de historial de Spark o a un metastore de Dataproc en Estados miembros de la Unión Europea, como
europe-north1
oeurope-west3
.
Una sola región
Una conexión de una sola región solo puede hacer referencia a recursos de la misma región. Google Cloud
Por ejemplo, una conexión de la región única us-east4
solo puede hacer referencia a un servidor de historial de Spark o a un metastore de Dataproc en us-east4
.
Crear conexiones
Selecciona una de las opciones siguientes:
Consola
Ve a la página BigQuery.
En el panel Explorador, haz clic en
Añadir datos.Se abrirá el cuadro de diálogo Añadir datos.
En el panel Filtrar por, en la sección Tipo de fuente de datos, selecciona Bases de datos.
También puede introducir
Spark
en el campo Buscar fuentes de datos.En la sección Fuentes de datos destacadas, haga clic en Apache Spark.
Haga clic en la tarjeta de solución Apache Spark: federación de BigQuery.
En el panel Fuente de datos externa, introduce la siguiente información:
En la lista Tipo de conexión, selecciona Apache Spark.
En el campo ID de conexión, introduce un nombre para la conexión (por ejemplo,
spark_connection
).En la lista Ubicación de los datos, selecciona una región.
Puedes crear una conexión en las regiones y multirregiones que admitan BigQuery. Para obtener más información, consulta Cuestiones importantes sobre ubicación.
Opcional: En la lista Servicio Metastore, selecciona un Dataproc Metastore.
Opcional: En el campo Clúster del servidor de historial, introduce un servidor de historial persistente de Dataproc.
Haga clic en Crear conexión.
Haz clic en Ir a la conexión.
En el panel Información de conexión, copie el ID de la cuenta de servicio para usarlo en un paso posterior.
bq
En un entorno de línea de comandos, usa el
bq mk
comando para crear una conexión:bq mk --connection --connection_type='SPARK' \ --properties=PROPERTIES \ --project_id=PROJECT_ID \ --location=LOCATION CONNECTION_ID
Haz los cambios siguientes:
PROPERTIES
: un par clave-valor para proporcionar parámetros específicos de la conexión en formato JSON.Por ejemplo:
--properties='{ "metastoreServiceConfig": {"metastoreService": "METASTORE_SERVICE_NAME"}, "sparkHistoryServerConfig": {"dataprocCluster": "DATAPROC_CLUSTER_NAME"} }'
Haz los cambios siguientes:
METASTORE_SERVICE_NAME
: el almacén de metadatos de Dataproc con una configuración de red gRPC—por ejemplo,projects/my-project-id/locations/us-central1/services/my-service
Para obtener más información, consulta cómo acceder a los metadatos del almacén de metadatos de Hive almacenados mediante un protocolo de endpoint.
DATAPROC_CLUSTER_NAME
: la configuración del servidor de historial de Spark. Por ejemplo,projects/my-project-id/regions/us-central1/clusters/my-cluster
Para obtener más información, consulta Crear un clúster de Persistent History Server.
PROJECT_ID
: tu ID de proyecto Google CloudLOCATION
: la ubicación en la que quieres almacenar la conexión (por ejemplo,US
).CONNECTION_ID
: el ID de la conexión, por ejemplo,myconnection
Cuando consultas los detalles de la conexión en la consola de Google Cloud , el ID de conexión es el valor de la última sección del ID de conexión completo que se muestra en ID de conexión, por ejemplo,
projects/.../locations/.../connections/myconnection
.
Obtén y copia el ID de la cuenta de servicio, ya que lo necesitarás en otro paso:
bq show --location=LOCATION --connection PROJECT_ID.LOCATION.CONNECTION_ID
El resultado debería ser similar al siguiente:
Connection myproject.us.myconnection name type properties ---------------------- ------- --------------------------------------------------- myproject.us.myconnection SPARK {"serviceAccountId": "bqserver@example.iam.gserviceaccount.com"}
Para obtener información sobre cómo gestionar las conexiones, consulta el artículo Gestionar conexiones.
Conceder acceso a la cuenta de servicio
Para permitir que un procedimiento almacenado de Apache Spark acceda a tus recursos Google Cloud, debes conceder a la cuenta de servicio asociada a la conexión del procedimiento almacenado los permisos de gestión de identidades y accesos necesarios. También puedes usar tu cuenta de servicio personalizada para acceder a los datos.
Para leer y escribir datos en BigQuery, debes dar a la cuenta de servicio los siguientes permisos de gestión de identidades y accesos:
bigquery.tables.*
en tus tablas de BigQuerybigquery.readsessions.*
en tu proyecto
El rol de gestión de identidades y accesos
roles/bigquery.admin
incluye los permisos que necesita la cuenta de servicio para leer y escribir datos en BigQuery.Para leer y escribir datos en Cloud Storage, debes conceder a la cuenta de servicio el permiso
storage.objects.*
en tus objetos de Cloud Storage.El rol de IAM
roles/storage.objectAdmin
incluye los permisos que necesita la cuenta de servicio para leer y escribir datos en Cloud Storage.Si especificas Dataproc Metastore al crear una conexión, para que BigQuery pueda obtener detalles sobre la configuración del almacén de metadatos, debes conceder a la cuenta de servicio el permiso
metastore.services.get
en tu Dataproc Metastore.El rol predefinido
roles/metastore.metadataViewer
incluye el permiso que necesita la cuenta de servicio para obtener detalles sobre la configuración del metastore.También debes conceder a la cuenta de servicio el rol
roles/storage.objectAdmin
en el segmento de Cloud Storage para que el procedimiento almacenado pueda acceder al directorio del almacén de Hive de tu Dataproc Metastore (hive.metastore.warehouse.dir
). Si el procedimiento almacenado realiza operaciones en el metastore, es posible que tengas que conceder permisos adicionales. Para obtener más información sobre los roles y permisos de gestión de identidades y accesos en Dataproc Metastore, consulta el artículo Roles y permisos predefinidos de Dataproc Metastore.Si especifica un servidor de historial persistente de Dataproc al crear una conexión, debe conceder a la cuenta de servicio los siguientes roles:
- El rol
roles/dataproc.viewer
de tu servidor de historial persistente de Dataproc que contiene el permisodataproc.clusters.get
. - El rol
roles/storage.objectAdmin
en el segmento de Cloud Storage que especifiques para la propiedadspark:spark.history.fs.logDirectory
cuando crees el servidor de historial persistente de Dataproc.
Para obtener más información, consulta Servidor de historial persistente de Dataproc y Roles y permisos de Dataproc.
- El rol
Compartir conexiones con usuarios
Puede conceder los siguientes roles para permitir que los usuarios consulten datos y gestionen conexiones:
roles/bigquery.connectionUser
: permite a los usuarios usar conexiones para conectarse con fuentes de datos externas y ejecutar consultas en ellas.roles/bigquery.connectionAdmin
: permite a los usuarios gestionar las conexiones.
Para obtener más información sobre los roles y permisos de gestión de identidades y accesos en BigQuery, consulta el artículo sobre roles y permisos predefinidos.
Selecciona una de las opciones siguientes:
Consola
Ve a la página BigQuery.
Las conexiones se muestran en tu proyecto, en un grupo llamado Conexiones externas.
En el panel Explorador, haga clic en el nombre del proyecto > Conexiones externas > conexión.
En el panel Detalles, haz clic en Compartir para compartir una conexión. A continuación, sigue estas instrucciones:
En el cuadro de diálogo Permisos de conexión, comparte la conexión con otras entidades principales añadiendo o editando entidades principales.
Haz clic en Guardar.
bq
No puedes compartir una conexión con la herramienta de línea de comandos bq. Para compartir una conexión, usa la Google Cloud consola o el método de la API Connections de BigQuery.
API
Usa el método projects.locations.connections.setIAM
de la sección de referencia de la API REST Connections de BigQuery y proporciona una instancia del recurso policy
.
Java
Antes de probar este ejemplo, sigue las Javainstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Java de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Siguientes pasos
- Consulta información sobre los diferentes tipos de conexión.
- Consulta cómo gestionar las conexiones.
- Consulta cómo crear un procedimiento almacenado para Apache Spark.
- Consulta cómo gestionar procedimientos almacenados.