Al usar Hologres para acelerar consultas sobre datos de MaxCompute mediante tablas externas, la falta de permisos puede provocar errores. A continuación se describen los errores de permisos de MaxCompute más comunes en Hologres, sus causas y soluciones.
Hologres accede a los datos de MaxCompute a través de tablas externas. El administrador de MaxCompute gestiona los permisos de las tablas de MaxCompute desde su propio servicio. Cuando ocurre un error de permiso, por lo general es necesario otorgar o modificar permisos en MaxCompute.
Resumen de problemas
La siguiente lista resume los errores de permisos de MaxCompute más frecuentes en Hologres e incluye enlaces a sus soluciones.
You have NO privilege 'odps:Select' on xxx when querying a foreign table
The sensitive label of column 'xxx' is 2, but your effective label is 0
You have NO privilege 'odps:Select' on xxx when accessing a table across projects
You have NO privilege 'odps:List' on xxx when creating a foreign table
Access denied by project ip white list when creating a foreign table
You don't exist in project xxx when creating a foreign table
Error en consulta de tabla externa: You have NO privilege 'odps:Select' on xxx
Problema
Después de crear una tabla externa en la consola de Hologres, al consultar dicha tabla se devuelve el siguiente error: You have NO privilege 'odps:Select' on xxx.
Causa
La cuenta actual no tiene el permiso SELECT sobre la tabla de MaxCompute.
Solución
Solicite al administrador de MaxCompute que otorgue el permiso SELECT sobre la tabla a la cuenta actual en MaxCompute. Para obtener más información, consulte Grant permissions in MaxCompute.
Una vez otorgado el permiso, vuelva a consultar la tabla externa para comprobar que el error ya no se presenta.
Error en consulta de tabla externa: The sensitive label of column 'xxx' is 2, but your effective label is 0
Problema
Después de crear una tabla externa en la consola de Hologres, al consultar dicha tabla se devuelve el siguiente error: The sensitive label of column 'xxx' is 2, but your effective label is 0.
Causa
La cuenta actual solo tiene permisos sobre algunas columnas de la tabla de MaxCompute.
Solución
Use uno de los siguientes métodos para resolver este problema:
(Recomendado) Actualice su instancia de Hologres a la versión V0.8 o posterior. Esta es la solución preferida si su instancia admite la actualización. Busque y únase al grupo de usuarios de Hologres para solicitar la actualización. Para obtener más información, consulte Join the Hologres user group.
Si no puede actualizar su instancia, agregue los siguientes parámetros antes de la consulta que va a ejecutar.
set hg_experimental_enable_odps_executor=on;
set hg_experimental_enable_query_master=on;
Si puede obtener permisos sobre todas las columnas, solicite al administrador de MaxCompute que otorgue acceso completo a las columnas para la cuenta actual. Para obtener más información, consulte Grant permissions in MaxCompute. Después de aplicar el método seleccionado, vuelva a consultar la tabla externa para confirmar que la consulta se ejecuta correctamente.
Error en acceso entre proyectos: You have NO privilege 'odps:Select' on xxx
Problema
La cuenta actual ya tiene el permiso SELECT sobre la tabla de MaxCompute, pero se devuelve el siguiente error cuando la cuenta accede a la tabla de MaxCompute entre proyectos: You have NO privilege 'odps:Select' on xxx.
Causa
La cuenta actual tiene el permiso SELECT sobre la tabla de MaxCompute, pero el acceso entre proyectos sigue fallando. Esto sucede cuando MaxCompute usa autorización basada en proyectos para el acceso entre proyectos.
Solución
Si MaxCompute usa autorización basada en proyectos, agregue las siguientes instrucciones SET antes de su instrucción SQL en Hologres. Reemplace <holoprojectname> con el nombre de su proyecto de Hologres.
-- For a V0.7 instance, run the following statement to grant permissions
set seahawks.seahawks_internal_current_odps_project='<holoprojectname>';
-- For a V0.8 instance, run the following statement to grant permissions
set hg_experimental_odps_current_project_name = '<holoprojectname>';
Después de agregar la instrucción SET, vuelva a ejecutar la consulta entre proyectos para comprobar que el error ya no se presenta.
Error en creación de tabla externa: You have NO privilege 'odps:List' on xxx
Problema
Al usar HoloWeb o DataStudio en la consola de Hologres para crear una tabla externa mediante la interfaz visual, se devuelve el siguiente error: You have NO privilege 'odps:List' on xxx.
Causa
La cuenta actual no tiene el permiso LIST para ver todas las tablas en MaxCompute.
Solución
Solicite al administrador de MaxCompute que otorgue a la cuenta actual el permiso LIST para ver todas las tablas en MaxCompute. Para obtener más información, consulte Grant permissions in MaxCompute.
Use instrucciones SQL para crear una tabla externa y consultar datos en lugar de usar la interfaz visual. Para obtener más información, consulte Create a foreign table by using SQL. Después de aplicar el método seleccionado, intente crear nuevamente la tabla externa para comprobar que el error ya no se presenta.
Error en creación de tabla externa: Access denied by project ip white list
Problema
Al usar HoloWeb en la consola de Hologres para crear una tabla externa, se devuelve el siguiente error: Access denied by project ip white list: sourceIP:'xxxx' is not in white list. project: xxxx.
Causa
El proyecto actual de MaxCompute está configurado para acceso basado en lista blanca, y HoloWeb no se encuentra en dicha lista.
Solución
Cuando la función de lista blanca de IP está habilitada para un proyecto de MaxCompute, solo las direcciones IP incluidas en la lista blanca pueden acceder al proyecto. Incluso con un AccessKey ID y un AccessKey secret válidos, las solicitudes provenientes de direcciones IP que no están en la lista blanca se rechazan. Agregue la dirección IP indicada en el mensaje de error a la lista blanca del proyecto de MaxCompute. Para obtener más información, consulte Configurar listas blancas de direcciones IP.
Después de agregar la dirección IP a la lista blanca, intente crear nuevamente la tabla externa para comprobar que el error ya no se presenta.
Error en creación de tabla externa: You don't exist in project xxx
Problema
Al crear una tabla externa, se devuelve el siguiente error: You don't exist in project xxx.
Causa
La cuenta que crea la tabla externa no tiene permiso para acceder al proyecto de MaxCompute especificado.
Solución
Compruebe el nombre del proyecto de MaxCompute al que desea acceder. Si el nombre del proyecto es incorrecto, use el nombre correcto. Si el nombre del proyecto es correcto pero el error persiste, otorgue a la cuenta mencionada en el mensaje de error permiso para acceder al proyecto de MaxCompute. Para obtener más información, consulte Add a user to a MaxCompute project.
Una vez otorgado el permiso, intente crear nuevamente la tabla externa para comprobar que el error se ha resuelto.