Interfaz del administrador de Dataproc Metastore

En esta página, se explica cómo usar la interfaz del 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 su lugar, puedes administrar tus metadatos con las APIs de gcloud CLI o Dataproc Metastore.

Por ejemplo, cuando usas la interfaz de administrador, puedes ejecutar una consulta en SQL directamente en los metadatos de tu 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 a él con SSH, iniciar una instancia de Hive y, por último, ejecutar una consulta (por ejemplo, SELECT * FROM table_name).

Como resultado, la interfaz de administrador puede ayudarte a ahorrar tiempo y a disminuir la cantidad de recursos de Google Cloud necesarios para recuperar tus datos.

Antes de comenzar

Roles obligatorios

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:

  • Sigue estos pasos para consultar metadatos de Dataproc Metastore: Administrador de consultas de metadatos (roles/metastore.metadataQueryAdmin) en la cuenta de usuario o de servicio
  • Sigue estos pasos para modificar la ubicación de los recursos de tus metadatos (incluidas las bases de datos, tablas y particiones) o para mover una tabla a otra base de datos:
    • Administrador de mutación de metadatos (roles/metastore.metadataMutateAdmin) en la cuenta de usuario o de servicio
    • Editor de Dataproc Metastore (roles/metastore.editor) en la cuenta de usuario o de servicio

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:

  • Sigue estos pasos para consultar metadatos de Dataproc Metastore: metastore.services.queryMetadata
  • Para modificar o mover las tablas de Dataproc Metastore, sigue estos pasos: 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 Descripción general de la IAM de Dataproc Metastore.

Operaciones de administrador compatibles

Solo puedes ejecutar operaciones de interfaz de administrador con gcloud CLI o las APIs de Dataproc Metastore. Operaciones de la interfaz de administrador no son compatibles con la consola de Google Cloud.

La interfaz de administrador admite las siguientes operaciones.

  • Operaciones de solo lectura.

    • Consulta metadatos.
  • Operaciones de lectura y escritura.

    • Alterar la ubicación de los recursos de tus metadatos, incluidas las bases de datos, las tablas y las particiones
    • Modifica las propiedades de la tabla, como los pares clave-valor personalizados.
    • Mover una tabla a otra base de datos

Metadatos de la consulta

Esta operación te permite buscar información de metadatos en tu base de datos con consultas en SQL. Después de ejecutar una consulta, los resultados se vuelcan en tu bucket de artefactos de Google Cloud.

Antes de ejecutar esta operación, ten en cuenta las siguientes consideraciones:

  • Las operaciones admitidas solo incluyen read-only consultas de MySQL o Spanner. Si la consulta intenta modificar los datos, la operación fallará.
  • El archivo de salida contiene un máximo de 1,000 filas. Esta configuración que no se puede cambiar.
  • Los archivos de salida no se borran automáticamente. En su lugar, debes borrarlos manualmente de tu bucket de Google Cloud. Si no las borras, es posible que incurras los costos de almacenamiento adicionales.

gcloud CLI

  1. Para consultar metadatos, ejecuta el siguiente comando 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 de Google Cloud a la que donde reside el servicio de Dataproc Metastore.
    • QUERY: Es la consulta en SQL para orientar tus metadatos.
      • Si usas una base de datos MySQL, usa una consulta de MySQL normal.
      • Si usas una base de datos de Spanner, usa una consulta de GoogleSQL.
  2. Visualiza el archivo de salida en tu bucket de artefactos de 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 orientar tus metadatos.
    • Si usas una base de datos MySQL, usa una consulta de MySQL normal.
    • Si usas una base de datos de Spanner, usa una consulta de GoogleSQL.
  • PROJECT_ID: El ID del proyecto de Google Cloud donde reside el 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 presenta 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 por primera vez un comando de consulta de metadatos, Dataproc Metastore crea una carpeta de Google Cloud en tu bucket de artefactos de Google Cloud. Esta carpeta se llama query-results. Después de cada ejecución de consulta correcta (llamada a la API), se crea una carpeta nueva dentro de la carpeta query-results (que se nombra con un UUID generado de forma aleatoria).

Cada carpeta nueva contiene un archivo result manifest con los resultados de tu consulta. La ubicación de esta carpeta se muestra en la respuesta de tu 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 fue exitosa o falló.
  • Si la ejecución de la consulta se realiza correctamente, el campo filenames enumera todos los archivos. crear. Estos archivos están en la misma carpeta que el archivo result manifest.
  • Si la consulta falló, el campo details muestra el mensaje de error.

Modificar la ubicación del recurso de los metadatos

Esta operación te permite modificar la ubicación del recurso de una base de datos, tabla o por cada partición.

Cuando ejecutas este comando, solo se actualiza el directorio superior o el recurso de metadatos correspondiente. Este comando no transfiere datos existentes a la ubicación nueva.

gcloud CLI

  1. Para alterar la ubicación de recursos 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 Dataproc Metastore. servicio.
    • LOCATION: Es la región de Google Cloud en la que reside tu servicio de Dataproc Metastore.
    • RESOURCE_NAME: Es el nombre de la base de datos, la tabla, o partición que alteras.
    • LOCATION_URI: La nueva ruta de acceso de Cloud Storage para el contenido de RESOURCE_NAME. Este valor es la ruta a la que trasladarás la ubicación de tu recurso de metadatos. Esta ruta de acceso debe comenzar con gs://. Por ejemplo, gs://bucket/object.
  2. 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: El ID del proyecto de Google Cloud donde reside el 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: La nueva ruta de acceso de Cloud Storage para el contenido de RESOURCE_NAME. Este valor es la ruta de acceso a la que mueves la ubicación del recurso de metadatos. Esta ruta de acceso debe comenzar con gs://. Por ejemplo, gs://bucket/object.

En el siguiente ejemplo, se muestra un comando de muestra que mueve una tabla llamada test-table2 a un bucket nuevo 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 la tabla

Esta operación te permite modificar las propiedades de una tabla, como una tabla par clave-valor que usas para almacenar datos. Por ejemplo, puedes cambiar Un par clave-valor de properties.customerID_1 en properties.customerID_2

gcloud CLI

  1. Para alterar 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 de 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: Los valores de propiedad existentes que estás actualizando Use una lista separada por comas para describir los pares clave-valor, por ejemplo, properties.1,properties.2,properties.3,...
    • PROPERTIES: 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 incluyas aquí reemplazarán los valores en UPDATE_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 de 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: Los valores de propiedad existentes que estás actualizando Use 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 incluyas aquí reemplazan los valores de UPDATE_MASK

En el siguiente ejemplo, se muestra un comando de muestra que altera las propiedades de una tabla llamada test-table. En este ejemplo, el par clave-valor existente, properties.customerID_1, se actualiza al valor nuevo 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 superior de la base de datos como sus datos.

No puedes mover datos almacenados en tablas externas.

gcloud CLI

  1. Para mover una tabla a otra base de datos, ejecuta el siguiente comando: 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 base de datos nueva a la que deseas mover la tabla.
  2. Verifica que el cambio en la 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: El ID del proyecto de Google Cloud en el que reside tu servicio de Metastore de Dataproc.
  • SERVICE: Es el nombre de tu servicio de Dataproc Metastore.
  • LOCATION: Es la región en la que Dataproc Metastore residen.
  • 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 base de datos nueva a la que deseas mover la tabla.

En el siguiente ejemplo, se muestra un comando de muestra que mueve un comando llamado Se llama testdb1 a una base de datos diferente 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

¿Qué sigue?