En esta página se explica cómo usar la interfaz de administrador de Dataproc Metastore.
La interfaz de administrador te proporciona una herramienta centralizada para inspeccionar y gestionar los metadatos almacenados en tu servicio Dataproc Metastore, todo ello sin tener que conectarte a un clúster de Dataproc ni a una instancia de Hive. En su lugar, puedes gestionar tus metadatos con la CLI de Google Cloud o las APIs de Dataproc Metastore.
Por ejemplo, con la interfaz de administrador, puedes ejecutar una consulta SQL directamente en los metadatos de tu backend para obtener el nombre de una tabla específica. Este proceso implica seguir menos pasos que el flujo de trabajo habitual, como crear un clúster de Dataproc, conectarse al clúster mediante SSH, iniciar una instancia de Hive y, por último, ejecutar una consulta (por ejemplo, SELECT * FROM table_name
).
Por lo tanto, la interfaz de administrador puede ayudarte a ahorrar tiempo y a reducir la cantidad de Google Cloud recursos necesarios para recuperar tus datos.
Antes de empezar
- Habilita Dataproc Metastore en tu proyecto.
- Crea un servicio de Dataproc Metastore.
- Importar metadatos a Dataproc Metastore.
Roles obligatorios
Para obtener los permisos que necesitas para usar la interfaz de administrador de Dataproc Metastore, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos en tu proyecto, según el principio de privilegio mínimo:
-
Para consultar metadatos de Dataproc Metastore, debes tener el rol:
Administrador de consultas de metadatos (
roles/metastore.metadataQueryAdmin
) en la cuenta de usuario o de servicio -
Para cambiar la ubicación de los recursos de tus metadatos, incluidas las bases de datos, las tablas y las particiones, o para mover una tabla a otra base de datos, sigue estos pasos:
-
Administrador de mutación de metadatos (
roles/metastore.metadataMutateAdmin
) en la cuenta de usuario o en la cuenta de servicio -
Editor de Dataproc Metastore (
roles/metastore.editor
) en la cuenta de usuario o de servicio
-
Administrador de mutación de metadatos (
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
Estos roles predefinidos contienen los permisos necesarios para usar la interfaz de administrador de Dataproc Metastore. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:
Permisos obligatorios
Para usar la interfaz de administrador de Dataproc Metastore, se necesitan los siguientes permisos:
-
Para consultar metadatos de Dataproc Metastore, sigue estos pasos:
metastore.services.queryMetadata
-
Para modificar o mover tablas de Dataproc Metastore:
metastore.services.mutateMetadata
También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.
Para obtener más información sobre roles y permisos específicos de Dataproc Metastore, consulta el artículo Información general sobre la gestión de identidades y accesos de Dataproc Metastore.Operaciones de administrador admitidas
Solo puedes ejecutar operaciones de la interfaz de administrador mediante la CLI de gcloud o las APIs de Dataproc Metastore. Las operaciones de la interfaz de administrador no se admiten en la consola Google Cloud .
La interfaz de administrador admite las siguientes operaciones.
Operaciones de solo lectura.
- Consultar metadatos.
Operaciones de lectura y escritura.
- Cambiar la ubicación de los recursos de los metadatos, incluidas las bases de datos, las tablas y las particiones.
- Modificar las propiedades de la tabla, como los pares clave-valor personalizados.
- Mueve una tabla a otra base de datos.
Si la interfaz de administrador no admite otra operación, puedes consultar directamente el metastore de Hive.
Por ejemplo, para enumerar todas las tablas de una instancia de Dataproc Metastore, puedes consultar directamente el esquema del metastore de Hive. En este caso, puedes ejecutar select * from TBLS
para ver todas las tablas almacenadas en tu servicio.
Consultar metadatos
Esta operación te permite buscar información de metadatos en tu base de datos mediante consultas de SQL. Después de ejecutar una consulta, los resultados se volcarán en tu cubo de artefactos Google Cloud .
Antes de ejecutar esta operación, ten en cuenta lo siguiente:
- Las operaciones admitidas solo incluyen consultas de
read-only
MySQL o Spanner. Si la consulta intenta modificar los datos, la operación falla. - El archivo de salida contiene un máximo de 1000 filas. Esta configuración no se puede cambiar.
Los archivos de salida no se eliminan automáticamente. En su lugar, debes eliminarlos manualmente de tu Google Cloud cubo. Si no los eliminas, es posible que tengas que pagar costes adicionales por el almacenamiento.
CLI de gcloud
Para consultar metadatos, ejecuta el siguiente comando
gcloud metastore services query-metadata
:gcloud metastore services query-metadata SERVICE \ --location=LOCATION \ --query=QUERY
Haz los cambios siguientes:
SERVICE
: el nombre de tu servicio de Dataproc Metastore.LOCATION
: la Google Cloud región en la que se encuentra tu servicio de Dataproc Metastore.QUERY
: la consulta de SQL para orientar los anuncios a tus metadatos.- Si usas una base de datos MySQL, utiliza una consulta MySQL normal.
- Si usas una base de datos de Spanner, utiliza una consulta de GoogleSQL.
Consulta el archivo de salida en tu contenedor de artefactos Google Cloud .
REST
curl -X POST -s -i \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-X POST -d '{"query": "QUERY"}' \
-H "Content-Type:application/json" \
https://metastore.googleapis.com/projects/PROJECT_ID/locations/LOCATION/services/SERVICE:queryMetadata
Haz los cambios siguientes:
QUERY
: la consulta SQL que usas para segmentar tus metadatos.- Si usas una base de datos MySQL, utiliza una consulta MySQL normal.
- Si usas una base de datos de Spanner, utiliza una consulta de GoogleSQL.
PROJECT_ID
: el ID del proyecto en el que se encuentra el servicio de Dataproc Metastore. Google CloudSERVICE
: el nombre de tu servicio Dataproc Metastore.LOCATION
: la región en la que se encuentra tu almacén de metadatos de Dataproc.
En el siguiente ejemplo se muestra un comando de muestra que ejecuta una consulta select *
de una base de datos llamada DBS.
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" -X POST -d '{"query": "select * from DBS;"}' \
https://metastore.googleapis.com/projects/dpms/locations/us-central1/services/dpms1:queryMetadata
Interpretar el resultado de una operación de metadatos de consulta
La primera vez que ejecute un comando de metadatos de consulta, Dataproc Metastore creará automáticamente una Google Cloud carpeta en su bucket de artefactos Google Cloud .
Esta carpeta se llama query-results
. Después de cada ejecución correcta de una consulta (llamada a la API), se crea una carpeta en la carpeta query-results
(que tiene un UUID generado aleatoriamente).
Cada carpeta nueva contiene un archivo result manifest
con los resultados de tu consulta. La ubicación de esta carpeta se devuelve en la respuesta de la llamada a la API.
Por ejemplo, en la respuesta, el campo resultManifestUri
contiene la ubicación del archivo.
"response": {
"@type": "type.googleapis.com/google.cloud.metastore.QueryMetadataResponse",
"resultManifestUri": "gs://gcs-bucket-6a3638b8-e319-46363-ad33-e632a5e/query-results/800156f5-2d13-4b80-bec3-2345a9e880f6/result-manifest"
}
El resultado del archivo result manifest
es similar al siguiente:
{
"status": {
"code": 0,
"message": "Query results are successfully uploaded to cloud storage",
"details": []
},
"filenames": ["result-001"]
}
Detalles del archivo de manifiesto del resultado:
- El campo
status
muestra si la consulta se ha realizado correctamente o no. - Si la ejecución de la consulta se realiza correctamente, el campo
filenames
muestra todos los archivos creados. Estos archivos están en la misma carpeta que el archivoresult manifest
. - Si la consulta ha fallado, el campo
details
muestra el mensaje de error.
Cambiar la ubicación de los recursos de los metadatos
Esta operación le permite modificar la ubicación de un recurso de una base de datos, una tabla o una partición.
Cuando ejecutas este comando, solo se actualiza el directorio principal o el recurso de metadatos correspondiente. Este comando no transfiere ningún dato a la nueva ubicación.
CLI de gcloud
Para cambiar la ubicación de los metadatos de un recurso, ejecuta el siguiente comando
gcloud metastore services alter-metadata-resource-location
:gcloud metastore services alter-metadata-resource-location SERVICE \ --location=LOCATION \ --resource_name=RESOURCE_NAME \ --location_uri=LOCATION_URI
Haz los cambios siguientes:
SERVICE
: el nombre de tu servicio Dataproc Metastore.LOCATION
: la Google Cloud región en la que se encuentra tu servicio de Dataproc Metastore.RESOURCE_NAME
: el nombre de la base de datos, la tabla o la partición que vas a modificar.LOCATION_URI
: la nueva ruta de Cloud Storage para el contenido deRESOURCE_NAME
. Este valor es la ruta a la que vas a mover la ubicación del recurso de metadatos. Esta ruta debe empezar porgs://
. Por ejemplo,gs://bucket/object
.
Verifica que el cambio de ubicación del recurso se haya realizado correctamente.
REST
curl -X POST -s -i \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
POST -d '{"resource_name": "RESOURCE_NAME", "location_uri":"LOCATION_URI"}' \
-H "Content-Type:application/json" \
https://metastore.googleapis.com/projects/PROJECT_ID/locations/LOCATION/services/SERVICE:alterLocation
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto en el que se encuentra el servicio de Dataproc Metastore. Google CloudSERVICE
: el nombre de tu servicio de Dataproc Metastore.LOCATION
: la región en la que se encuentra tu almacén de metadatos de Dataproc.RESOURCE_NAME
: el nombre de la base de datos, la tabla o la partición que vas a modificar.LOCATION_URI
: la nueva ruta de Cloud Storage para el contenido deRESOURCE_NAME
. Este valor es la ruta a la que vas a mover la ubicación del recurso de metadatos. Esta ruta debe empezar porgs://
. Por ejemplo,gs://bucket/object
.
En el ejemplo siguiente se muestra un comando de muestra que mueve una tabla llamada test-table2
a un nuevo segmento de Cloud Storage.
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-X POST -d '{"resource_name": "databases/testdb1/tables/test-table2",
"location_uri":"gs://gcs-bucket-dpms1-9425bd83-b794-4f1c-9e79-2d833f758cc1/empty"}'
https://metastore.googleapis.com/projects/dpms/locations/us-central1/services/dpms1:alterLocation
Modificar las propiedades de una tabla
Esta operación le permite modificar las propiedades de una tabla, como un par clave-valor personalizado que esté usando para almacenar datos. Por ejemplo, puede cambiar el par clave-valor properties.customerID_1
por properties.customerID_2
.
CLI de gcloud
Para modificar las propiedades de una tabla, ejecuta el siguiente comando
gcloud metastore services alter-table-properties
:gcloud metastore services alter-table-properties SERVICE \ --location=LOCATION \ --table-name=TABLE_NAME \ --update-mask=UPDATE_MASK \ --properties=PROPERTIES
Haz los cambios siguientes:
SERVICE
: el nombre de tu servicio de Dataproc Metastore.LOCATION
: la Google Cloud región en la que se encuentra tu servicio de Dataproc Metastore.TABLE_NAME
: el nombre de la tabla que contiene las propiedades que vas a modificar con el siguiente formato:databases/{database_id}/tables/{table_id}
.UPDATE_MASK
: los valores de propiedad que ya tiene y que quiere actualizar. Usa una lista separada por comas para describir los pares clave-valor. Por ejemplo,properties.1,properties.2,properties.3,...
.PROPERTIES
: las nuevas propiedades de la tabla. Usa una lista separada por comas para describir los pares clave-valor. Por ejemplo,a=1,b=2,c=3,...
. Los valores que indiques aquí sobrescribirán los valores deUPDATE_MASK
.
REST
curl -X POST -s -i \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
POST -d '{"table_name": "TABLE_NAME", "update_mask":"UPDATE_MASK", "properties":PROPERTIES}'\
-H "Content-Type:application/json" \
https://metastore.googleapis.com/projects/PROJECT_ID/locations/LOCATION/services/SERVICE:alterTableProperties
Haz los cambios siguientes:
SERVICE
: el nombre de tu servicio de Dataproc Metastore.LOCATION
: la Google Cloud región en la que se encuentra tu servicio de Dataproc Metastore.TABLE_NAME
: el nombre de la tabla que contiene las propiedades que vas a modificar con el siguiente formato:databases/{database_id}/tables/{table_id}
.UPDATE_MASK
: los valores de propiedad que ya tienes y que vas a actualizar. Usa una lista separada por comas para describir los pares clave-valor. Por ejemplo,properties.1,properties.2,properties.3,...
.PROPERTIES
: las nuevas propiedades de la tabla. Usa una lista separada por comas para describir los pares clave-valor. Por ejemplo,a=1,b=2,c=3,...
. Los valores que indiques aquí sobrescribirán los valores deUPDATE_MASK
.
En el ejemplo siguiente se muestra un comando de muestra que modifica las propiedades de una tabla llamada test-table
. En este ejemplo, el par clave-valor properties.customerID_1
se actualiza al nuevo valor properties.customerID_2
.
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json"
-X POST -d '{"table_name": "databases/default/tables/test-table", "update_mask":{"paths":"properties.customerID_1"}, "properties":{"customerID_1":"customerID_2"}}' https://metastore.googleapis.com/projects/dpms-p
Mover una tabla a otra base de datos
Esta operación te permite mover una tabla interna (tabla gestionada) a otra base de datos. En este caso, se moverán tanto el directorio principal de la base de datos como sus datos.
No puedes mover los datos almacenados en tablas externas.
CLI de gcloud
Para mover una tabla a otra base de datos, ejecuta el siguiente comando
gcloud metastore services move-table-to-database
:gcloud metastore services move-table-to-database SERVICE \ --location=LOCATION \ --db_name=DB_NAME \ --table_name=TABLE_NAME \ --destination_db_name=DESTINATION_DB_NAME
Haz los cambios siguientes:
SERVICE
: el nombre de tu servicio de Dataproc Metastore.LOCATION
: la Google Cloud región en la que se encuentra tu servicio de Dataproc Metastore.DB_NAME
: el nombre de la base de datos de origen que contiene la tabla que quieres mover.TABLE_NAME
: el nombre de la tabla que quieras mover.DESTINATION_DB_NAME
: el nombre de la nueva base de datos a la que quieres mover la tabla.
Verifica que el cambio de tabla se haya realizado correctamente.
REST
curl -X POST -s -i \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
POST -d '{"table_name": "TABLE_NAME", "db_name": "DB_NAME", "destination_db_name": "DESTINATION_DB_NAME"}'\
-H "Content-Type:application/json" \
https://metastore.googleapis.com/projects/PROJECT_ID/locations/LOCATION/services/SERVICE:moveTableToDatabase
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto en el que se encuentra tu servicio Dataproc Metastore. Google CloudSERVICE
: el nombre de tu servicio Dataproc Metastore.LOCATION
: la región en la que se encuentra tu almacén de metadatos de Dataproc.DB_NAME
: el nombre de la base de datos de origen que contiene la tabla que quieres mover.TABLE_NAME
: el nombre de la tabla que quieras mover.DESTINATION_DB_NAME
: el nombre de la nueva base de datos a la que quieres mover la tabla.
En el siguiente ejemplo se muestra un comando de muestra que mueve una base de datos llamada testdb1
a otra base de datos llamada testdb2
.
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json"
-X POST -d '{"table_name": "testtb1", "db_name": "testdb1",
"destination_db_name": "testdb2"}' https://metastore.googleapis.com/projects/dpms/locations/asia-northeast2/services/dpms1:moveTableToDatabase