Interfaz de administrador de Dataproc Metastore

En esta página, se explica cómo usar el administrador de Dataproc Metastore interfaz de usuario.

La interfaz de administrador ofrece una herramienta centralizada para inspeccionar y administrar los metadatos almacenados en tu servicio de Dataproc Metastore sin tener que conectarse a un clúster de Dataproc o una instancia de Hive. En cambio, puedes administrar tus metadatos con gcloud CLI o Dataproc Metastore APIs

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 siguiendo menos pasos que el típico flujo de trabajo, por ejemplo, crear un clúster de Dataproc, conectarse al clúster mediante SSH, iniciar una instancia de Hive y, por último, ejecutarás 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

A fin de obtener los permisos que necesitas para usar la interfaz de administrador de Dataproc Metastore, haz lo siguiente: solicita a tu administrador que te otorgue el 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 modificació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

Si quieres obtener más información para otorgar roles, consulta Administra el acceso.

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 roles y permisos específicos de Dataproc Metastore, consulta Descripción general de 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.

    • Metadatos de la consulta.
  • Operaciones de lectura y escritura:

    • Modificar la ubicación de los recursos de tus metadatos, incluidas las bases de datos, las tablas y particiones.
    • Modificar las propiedades de la tabla, como 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 para modificar los datos, la operación falla.
  • 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 borrar manualmente desde 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 Dataproc Metastore. servicio.
  • LOCATION: Es la región en la que Dataproc Metastore residen.

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

Interpretar 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. El nombre de la carpeta es query-results. Después de cada ejecución de consulta exitosa (llamada a la API), se crea una carpeta nueva dentro de la carpeta query-results (que tiene un nombre con un un UUID generado de forma aleatoria).

Cada carpeta nueva contiene un archivo result manifest con los resultados de la consulta. La ubicación de esta carpeta se devuelve 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 dio como resultado un error, 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 actualiza el directorio superior o el respectivo recurso de metadatos. Este comando no transfiere ningún dato existente al nueva ubicación.

gcloud CLI

  1. Para modificar la ubicación del recurso de los metadatos, ejecuta el siguiente comando: 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

    Reemplaza lo siguiente:

    • SERVICE: Es el nombre de tu Dataproc Metastore. servicio.
    • LOCATION: Es la región de Google Cloud a la que donde reside el servicio de Dataproc Metastore.
    • RESOURCE_NAME: Es el nombre de la base de datos, la tabla o partición que estás alterando.
    • LOCATION_URI: la nueva ruta de Cloud Storage para el contenido de RESOURCE_NAME Este valor es la ruta a la que mueves la ubicación del 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, tabla o partición que estás modificando.
  • LOCATION_URI: la nueva ruta de Cloud Storage para el contenido de RESOURCE_NAME Este valor es la ruta 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 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

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 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 de Google Cloud a la que donde reside el servicio de Dataproc Metastore.
    • TABLE_NAME: Es el nombre de la tabla que contiene la propiedades que estás alterando en el siguiente formato, databases/{database_id}/tables/{table_id}
    • UPDATE_MASK: Son 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í 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 a la que donde reside el servicio de Dataproc Metastore.
  • TABLE_NAME: Es el nombre de la tabla que contiene la propiedades que estás alterando en el siguiente formato, databases/{database_id}/tables/{table_id}
  • UPDATE_MASK: Son 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. Use 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.

El siguiente ejemplo muestra un comando de muestra que altera las propiedades de la tabla de una tabla llamada test-table. En este ejemplo, se muestra el par clave-valor existente, properties.customerID_1 se actualizó 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

Mueve 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: Es el ID del proyecto de Google Cloud donde reside el servicio de Dataproc Metastore.
  • SERVICE: Es el nombre de tu Dataproc Metastore. servicio.
  • 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 quieres 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 quieres 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?