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 administrar los metadatos almacenados en tu servicio de Dataproc Metastore, todo sin tener que conectarte a un clúster de Dataproc ni a una instancia de Hive. En cambio, puedes administrar tus metadatos con Google Cloud CLI o las APIs de Dataproc Metastore.
Por ejemplo, con la interfaz del administrador, puedes ejecutar una consulta en SQL directamente en los metadatos de backend para recuperar un nombre de tabla específico. Este proceso implica seguir menos pasos que el flujo de trabajo típico, como crear un clúster de Dataproc, conectarse al clúster con SSH, iniciar una instancia de Hive y, luego, ejecutar una consulta (por ejemplo, SELECT * FROM table_name
).
Como resultado, la interfaz del administrador puede ayudarte a ahorrar tiempo y a disminuir la cantidad de recursos Google Cloud necesarios para recuperar tus datos.
Antes de comenzar
- Habilita Dataproc Metastore en tu proyecto.
- Crea un servicio de Dataproc Metastore.
- Importa metadatos a Dataproc Metastore.
Roles requeridos
Para obtener los permisos que necesitas para usar la interfaz de administrador de Dataproc Metastore, pídele a tu administrador que te otorgue los siguientes roles de IAM en tu proyecto, según el principio de privilegio mínimo:
-
Para consultar los metadatos de Dataproc Metastore, debes tener el rol de administrador de consultas de metadatos (
roles/metastore.metadataQueryAdmin
) en la cuenta de usuario o de servicio. -
Para modificar la ubicación del recurso de tus metadatos, incluidas las bases de datos, las tablas y las particiones, o mover una tabla a otra base de datos, haz lo siguiente:
-
Administrador de mutación de metadatos (
roles/metastore.metadataMutateAdmin
) en la cuenta de usuario o la cuenta de servicio -
Editor de Dataproc Metastore (
roles/metastore.editor
) en la cuenta de usuario o la cuenta de servicio
-
Administrador de mutación de metadatos (
Para obtener más información sobre cómo otorgar roles, consulta Administra 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 son necesarios, expande la sección Permisos requeridos:
Permisos necesarios
Se requieren los siguientes permisos para usar la interfaz de administrador de Dataproc Metastore:
-
Para consultar los metadatos de Dataproc Metastore, haz lo siguiente:
metastore.services.queryMetadata
-
Para modificar o mover tablas de Dataproc Metastore, haz lo siguiente:
metastore.services.mutateMetadata
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.
Para obtener más información sobre los roles y permisos específicos de Dataproc Metastore, consulta la Descripción general de Identity and Access Management de Dataproc Metastore.Operaciones de administrador admitidas
Solo puedes ejecutar operaciones de la interfaz de administrador con gcloud CLI o las APIs de Dataproc Metastore. Las operaciones de la interfaz del administrador no son compatibles con la consola de Google Cloud .
La interfaz de administrador admite las siguientes operaciones.
Operaciones de solo lectura.
- Consultar metadatos
Operaciones de lectura y escritura.
- Modificar la ubicación del recurso de tus metadatos, incluidas las bases de datos, las tablas y las particiones
- Modificar las propiedades de la tabla, como los pares clave-valor personalizados
- Mover una tabla a otra base de datos
Si la interfaz del administrador no admite otra operación, puedes consultar el metastore de Hive directamente.
Por ejemplo, para enumerar todas las tablas en una instancia de Dataproc Metastore, puedes consultar el esquema de Hive Metastore directamente. En este caso, puedes ejecutar select * from TBLS
para enumerar todas las tablas almacenadas en tu servicio.
Consulta de metadatos
Esta operación te permite buscar información de metadatos en tu base de datos con consultas de SQL. Después de ejecutar una consulta, los resultados se vuelcan en tu bucket de artefactos Google Cloud .
Antes de ejecutar esta operación, ten en cuenta las siguientes consideraciones:
- 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 1,000 filas. No se puede cambiar esta configuración.
Los archivos de salida no se borran automáticamente. En su lugar, debes borrarlos manualmente de tu bucket de Google Cloud . Si no los borras, es posible que incurras en costos de almacenamiento adicionales.
gcloud CLI
Para consultar los metadatos, ejecuta el siguiente comando de
gcloud metastore services query-metadata
:gcloud metastore services query-metadata SERVICE \ --location=LOCATION \ --query=QUERY
Reemplaza lo siguiente:
SERVICE
: Es el nombre de tu servicio de Dataproc Metastore.LOCATION
: Es la región Google Cloud en la que reside tu servicio de Dataproc Metastore.QUERY
: Es la consulta en SQL para segmentar tus metadatos.- Si usas una base de datos MySQL, usa una consulta MySQL normal.
- Si usas una base de datos de Spanner, usa una consulta de GoogleSQL.
Consulta el archivo de salida en tu bucket 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
Reemplaza lo siguiente:
QUERY
: Es la consulta en SQL que usas para segmentar tus metadatos.- Si usas una base de datos MySQL, usa una consulta MySQL normal.
- Si usas una base de datos de Spanner, usa una consulta de GoogleSQL.
PROJECT_ID
: Es el ID del proyecto de Google Cloud en el que reside tu servicio de Dataproc Metastore.SERVICE
: Es el nombre de tu servicio de Dataproc Metastore.LOCATION
: Es la región en la que reside tu Dataproc Metastore.
En el siguiente ejemplo, se muestra un comando de muestra que ejecuta una consulta select *
desde 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
Interpreta el resultado de una operación de metadatos de consulta
Cuando ejecutas un comando de metadatos de consulta por primera vez, Dataproc Metastore crea automáticamente una carpeta Google Cloud en tu bucket de artefactos Google Cloud .
Esta carpeta se llama query-results
. Después de cada ejecución exitosa de la consulta (llamada a la API), se crea una carpeta nueva dentro de la carpeta query-results
(que se denomina con un UUID generado de forma aleatoria).
Cada carpeta nueva contiene un archivo result manifest
con los resultados de tu búsqueda. 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 realizó correctamente o no. - Si la ejecución de la consulta se realiza correctamente, el campo
filenames
enumera todos los archivos creados. Estos archivos están en la misma carpeta que el archivoresult manifest
. - Si la consulta falló, el campo
details
muestra el mensaje de error.
Modifica la ubicación del recurso de tus metadatos
Esta operación te permite modificar la ubicación del 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 existente a la nueva ubicación.
gcloud CLI
Para modificar la ubicación del recurso de los metadatos, ejecuta el siguiente comando de
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
Reemplaza lo siguiente:
SERVICE
: Es el nombre de tu servicio de Dataproc Metastore.LOCATION
: Es la región Google Cloud en la que reside tu servicio de Dataproc Metastore.RESOURCE_NAME
: Es el nombre de la base de datos, la tabla o la partición que estás modificando.LOCATION_URI
: Es la nueva ruta de acceso de Cloud Storage para el contenido deRESOURCE_NAME
. Este valor es la ruta a la que moverás la ubicación de tu recurso de metadatos. Esta ruta de acceso debe comenzar congs://
. 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
Reemplaza lo siguiente:
PROJECT_ID
: Es el ID del proyecto de Google Cloud en el que reside tu servicio de Dataproc Metastore.SERVICE
: Es el nombre de tu servicio de Dataproc Metastore.LOCATION
: Es la región en la que reside tu Dataproc Metastore.RESOURCE_NAME
: Es el nombre de la base de datos, la tabla o la partición que modificarás.LOCATION_URI
: Es la nueva ruta de acceso de Cloud Storage para el contenido deRESOURCE_NAME
. Este valor es la ruta a la que moverás la ubicación de tu recurso de metadatos. Esta ruta de acceso debe comenzar congs://
. Por ejemplo,gs://bucket/object
.
En el siguiente ejemplo, se muestra un comando de muestra que mueve una tabla llamada test-table2
a un nuevo bucket 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
Cómo modificar las propiedades de la tabla
Esta operación te permite modificar las propiedades de una tabla, como un par clave-valor personalizado que usas para almacenar datos. Por ejemplo, puedes cambiar un par clave-valor de properties.customerID_1
a properties.customerID_2
.
gcloud CLI
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
Reemplaza lo siguiente:
SERVICE
: Es el nombre de tu servicio de Dataproc Metastore.LOCATION
: Es la región Google Cloud en la que reside tu servicio de Dataproc Metastore.TABLE_NAME
: Es el nombre de la tabla que contiene las propiedades que modificarás en el siguiente formato:databases/{database_id}/tables/{table_id}
.UPDATE_MASK
: Son los valores de propiedad existentes que estás actualizando. Usa una lista separada por comas para describir los pares clave-valor, por ejemplo,properties.1,properties.2,properties.3,...
.PROPERTIES
: Son las propiedades nuevas de tu tabla. Usa una lista separada por comas para describir los pares clave-valor. Por ejemplo,a=1,b=2,c=3,...
Los valores que se indican aquí reemplazan 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
Reemplaza lo siguiente:
SERVICE
: Es el nombre de tu servicio de Dataproc Metastore.LOCATION
: Es la región Google Cloud en la que reside tu servicio de Dataproc Metastore.TABLE_NAME
: Es el nombre de la tabla que contiene las propiedades que modificarás en el siguiente formato:databases/{database_id}/tables/{table_id}
.UPDATE_MASK
: Son los valores de propiedad existentes que estás actualizando. Usa una lista separada por comas para describir los pares clave-valor, por ejemplo,properties.1,properties.2,properties.3,...
.PROPERTIES
: Son las propiedades nuevas de tu tabla. Usa una lista separada por comas para describir los pares clave-valor, por ejemplo,a=1,b=2,c=3,...
. Los valores que se enumeran aquí anulan los valores deUPDATE_MASK
.
En el siguiente ejemplo, se muestra un comando de muestra que modifica las propiedades de una tabla llamada test-table
. En este ejemplo, el par clave-valor existente, 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
Cómo mover una tabla a otra base de datos
Esta operación te permite mover una tabla interna (tabla administrada) a otra base de datos. En este caso, se mueven tanto el directorio principal de la base de datos como sus datos.
No puedes mover los datos almacenados en tablas externas.
gcloud CLI
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
Reemplaza lo siguiente:
SERVICE
: Es el nombre de tu servicio de Dataproc Metastore.LOCATION
: Es la región de Google Cloud en la que reside tu servicio de Dataproc Metastore.DB_NAME
: Es el nombre de la base de datos de origen que contiene la tabla que deseas mover.TABLE_NAME
: Es el nombre de la tabla que deseas mover.DESTINATION_DB_NAME
: Es el nombre de la nueva base de datos a la que deseas 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
Reemplaza lo siguiente:
PROJECT_ID
: Es el Google Cloud ID del proyecto en el que reside tu servicio de Dataproc Metastore.SERVICE
: Es el nombre de tu servicio de Dataproc Metastore.LOCATION
: Es la región en la que reside tu Dataproc Metastore.DB_NAME
: Es el nombre de la base de datos de origen que contiene la tabla que deseas mover.TABLE_NAME
: Es el nombre de la tabla que deseas mover.DESTINATION_DB_NAME
: Es el nombre de la nueva base de datos a la que deseas 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