Problemas conocidos (limitaciones)
Las siguientes limitaciones y problemas conocidos se aplican a IBM® watsonx.data.
El control de acceso no funciona para los motores del tipo Gluten.
Se genera un error tras un uso prolongado de watsonx.data Assistant
Después de utilizar watsonx.data Assistant durante un periodo prolongado, se genera el siguiente error.
There is an error with the message you just sent, but feel free to ask me something else.
Solución: Vuelva a cargar el navegador.
No se puede volver a registrar SAL después de eliminar el registro existente
El usuario no de prueba no puede volver a registrar SAL después de eliminar el registro existente.
Solución: Realice los siguientes pasos:
-
Añade acceso para el usuario en la cuenta en la nube de acceso IAM.
-
Utilice la siguiente API SAL para eliminar la integración.
curl -X 'DELETE' \ 'https://api.dataplatform.cloud.ibm.com/semantic_automation/v1/wxd_integrations/<wxd-instance-id>' \ -H 'accept: */*' \ -H 'Authorization: Bearer <iam_bearer_token>'
-
Utilice la siguiente API para comprobar el estado de la integración y asegurarse de que se ha eliminado.
curl -X 'GET' \ 'https://api.dataplatform.cloud.ibm.com/semantic_automation/v1/wxd_integrations/<wxd-instance-id>' \ -H 'accept: */*' \ -H 'Authorization: Bearer <iam_bearer_token>'
-
Vuelva a registrar SAL.
La creación de tablas materializadas en el espacio de trabajo de consulta se realiza correctamente, pero falla en el cuaderno Spark utilizando los mismos permisos
Al intentar crear una tabla materializada mediante una consulta SQL en el área de trabajo Consulta, la operación se realiza correctamente. El usuario tiene acceso de lectura al bucket y a las políticas de acceso apropiadas (insertar, actualizar,
seleccionar, eliminar) para el catálogo Iceberg por defecto. Sin embargo, cuando se ejecuta la misma sentencia SQL dentro de un cuaderno Spark utilizando la plantilla watsonx.data Spark genera el siguiente error the action is not allowed
.
Solución: Defina la política L3 para el almacenamiento iceberg-bucket en la página Create access control policy
.
El cubo QHMM se asocia al motor sólo cuando el motor está en marcha
Si asocia un catálogo QHMM con el motor durante el estado de aprovisionamiento, el sistema devolverá un error indicando que el catálogo no existe en el lado de servicio. Sin embargo, el sistema asocia automáticamente el catálogo QHMM cuando el motor está en marcha.
Los usuarios pueden encontrarse con el error "Error de conexión de prueba debido a credenciales no válidas"
Los usuarios pueden encontrar un error de "error de conexión de prueba debido a credenciales no válidas" para algunas fuentes de datos, incluso cuando las credenciales de la fuente de datos son correctas. Este problema puede producirse a pesar de que las credenciales sean válidas, impidiendo que se realicen correctamente las pruebas de conexión a las fuentes de datos.
Solución: Si se encuentra con este error, debe ponerse en contacto con el servicio de asistencia IBM.
El botón de reinicio no restablece la configuración predeterminada de los umbrales
Al hacer clic en el botón Reset
no se restablecen los umbrales a su configuración predeterminada o global, sino que se revierten los cambios realizados desde la última vez que se guardaron, lo que es similar a la acción del botón
Cancel
.
Solución: Para lograr el restablecimiento deseado de la configuración predeterminada, revierta manualmente cada configuración de umbral a su valor requerido y, a continuación, guarde los cambios.
La ausencia de estadísticas NDV de columna en las tablas Iceberg da lugar a planes de consulta subóptimos
En la implementación actual, para las tablas Iceberg dentro de Presto ( Java ) y Presto (C++), las estadísticas de la columna NDV (Number of Distinct Values) no se utilizan cuando están disponibles en MDS. Las NDV son importantes para generar planes de consulta óptimos. Sin ellos, puede producirse una importante degradación del rendimiento.
Solución: Para tablas no particionadas, utilice SET SESSION <iceberg_catalog>.hive_statistics_merge_strategy='USE_NULLS_FRACTION_AND_NDV';
.
Esta solución no se aplica a las tablas particionadas.
Limitación de la configuración de la red privada virtual
Los puntos finales privados no son compatibles con motores externos como IBM Db2 Warehouse, IBM Netezza, y IBM Analytics Engine (Spark).
HDFS la adición de cubos no es posible a través de CPDCTL
Actualmente, el complemento cpdctl wx-data no permite añadir cubos HDFS.
IBM watsonx.data Presto el conector en Software Hub 5.1.1 y posteriores no puede conectarse a IBM watsonx.data Instancia en la nube
IBM watsonx.data Presto el conector no puede conectarse a la instancia IBM watsonx.data debido a un error 520 de Cloudflare. Este problema se produce cuando se realizan varias llamadas simultáneas a la API GET /engines
, especialmente
cuando la instancia watsonx.data tiene un gran número de políticas.
Modificar las credenciales del cubo inicial del motor Spark puede alterar los datos y las operaciones
La actualización de las credenciales de acceso a un bucket de almacenamiento designado como bucket de origen del motor Spark durante el proceso de aprovisionamiento puede provocar problemas de acceso a los datos y fallos operativos.
Los administradores de metastore y los visores de metastore no pueden ver el esquema y los detalles de las tablas
Un usuario con privilegios de administrador del metastore y visor del metastore en el espacio de trabajo Consulta y Gestor de datos, no puede ver los detalles del esquema y la tabla a menos que se defina una política de vista para esquemas y tablas.
Los escenarios de evolución de esquemas fallan en Presto (C++)
Al eliminar y/o añadir columnas de una tabla, las consultas pueden fallar. Por ejemplo, véase la secuencia de sentencias siguiente, tras la cual fallan las consultas sobre la tabla.
create table ice.s3.tessch.12 (age int, name varchar(25), place varchar(25)
insert into ice.s3.tessch.t12 values (35, 'ken', 'paris')
alter table ice.s3.tessch.t12 drop column age
select * from ice.s3.tessch.t12
alter table ice.s3.tessch.t8 add column place varchar(25)
Solución: Para PARQUET
, ejecute el siguiente comando en sesión:
set session <catalog-name>.parquet_use_column_names=true;
Sustituya <catalog-name>
por el catálogo real utilizado.
O configure hive.parquet.use-column-names=true
en las propiedades del catálogo. Para ORC
, establezca hive.orc.use-column-names=true
en las propiedades del catálogo.
Connection Information
muestra un nombre de usuario truncado
La página Connection Information
muestra un nombre de usuario truncado, excluyendo el prefijo ibmlhapikey_
para PowerBI
y Looker
.
Solución: Añada el prefijo ibmlhapikey_
al nombre de usuario cuando copie manualmente el valor para permitir conexiones con herramientas BI.
Problema con el carácter turco İ en mayúsculas en la base de datos Oracle utilizando el juego de caracteres WE8ISO8859P9 ( ORA-00911 Error)
En una base de datos Oracle que utilice el juego de caracteres WE8ISO8859P9, el carácter turco en mayúsculas İ no se admite en el modo de indicador de característica de mayúsculas y minúsculas mixtas desactivado (predeterminado), lo que provoca errores de carácter no válido en ORA-00911:.
Solución: Active el indicador de función de mayúsculas y minúsculas.
La vista predeterminada de un catálogo en information_schema
muestra esquemas y tablas de otros catálogos
Si un usuario tiene más de un catálogo, la vista predeterminada de information_schema
mostrará también los esquemas y tablas de otros catálogos, independientemente de los catálogos asociados al motor.
Hive los nombres de columnas externas con letras mayúsculas de ancho completo no se pueden reconocer cuando file-column-names-read-as-lower-case está establecido en true
Cuando el valor presto worker catalog property file-column-names-read-as-lower-case se establece en true, convierte los nombres de campo en letras ASCII mayúsculas a ASCII minúsculas. Como resultado, los datos bajo nombres de columna con caracteres en mayúsculas de ancho completo no serán reconocidos y aparecerán como "nulos".
Error de Spark Job debido a la firma ADLS caducada durante la operación de escritura/eliminación/actualización
El trabajo de Spark falla con el siguiente error cuando realiza una operación de escritura/eliminación/actualización en un almacenamiento ADLS- Gen1. Esto ocurre porque la firma ADLS caduca en medio del proceso.
java.io.IOException: Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature
Solución alternativa: Establezca el tiempo de caducidad de la firma ADLS en un valor grande. Configure la propiedad, spark.hadoop.spark.hadoop.wxd.cas.sas.expiry.period
, para controlar el tiempo de caducidad de
la firma ADLS. Actualizar el valor predeterminado de 300s a 43200s.
Presto Limitación del tamaño de la contraseña de CLI
Presto CLI admite un tamaño máximo de contraseña de 1 KB (1024 bytes). Si la contraseña supera este tamaño, el sistema no puede aceptarla en el campo de contraseña; en su lugar, debe exportarse.
El tipo de datos timestamptz no es compatible con una tabla ORC durante la actualización de la consola web watsonx.data.
Los nombres de bases de datos que contengan guiones o espacios no pueden ser consultados por el motor Spark en un notebook de Python, incluso cuando se haya añadido la extensión de control de acceso de Spark adecuada.
Los términos comerciales permanecen después de que la integración de la capa de automatización semántica se elimina de IBM watsonx.data
Los términos comerciales que se importaron a IBM Knowledge Catalog para una integración de capa de automatización semántica (SAL) en watsonx.data no se eliminan cuando se elimina la integración. Esto puede dar lugar a la duplicación de las condiciones comerciales si posteriormente se habilita una nueva integración SAL y se vuelven a cargar las mismas condiciones comerciales o unas similares.
Solución alternativa: para evitar la duplicación de términos comerciales, el administrador del clúster o el usuario que creó originalmente el registro SAL debe eliminar manualmente todos los términos comerciales que se importaron para la integración SAL.
La cláusula EXISTS en las tablas Apache Phoenix genera una excepción al ejecutar el error de consulta
Las consultas que implican la cláusula EXISTS en tablas Apache Phoenix pueden fallar inesperadamente, incluso cuando la columna a la que se hace referencia es válida. Esto ocurre debido a limitaciones en la interpretación de la cláusula EXISTS por parte de Apache Phoenix, particularmente en casos con estructuras de consulta ambiguas o desalineadas.
Solución: Para solucionar esta limitación, aplique una de las siguientes estrategias:
-
Establecer una relación clara entre la subconsulta y la consulta principal. Introduce una condición de filtro dentro de la subconsulta para crear una relación significativa entre la subconsulta y la consulta principal. Por ejemplo, donde department_id_bigint NO ES NULL en la subconsulta. Para más información, consulte el siguiente ejemplo:
SELECT DISTINCT t1.first_name_varchar, t2.performance_rating_real, t1.team_head_varchar FROM phoenix.tm_lh_engine.employee t1, phoenix.tm_lh_engine.departments t2 WHERE EXISTS ( SELECT 1 FROM phoenix.tm_lh_engine.departments WHERE department_id_bigint IS NOT NULL )
-
Establezca una relación clara entre las tablas implicadas uniendo explícitamente las tablas en la subconsulta. Esto garantiza que la subconsulta sea contextualmente relevante y resuelva el problema de ejecución. Por ejemplo, donde t3.department_id_bigint = t2.department_id_bigint en la subconsulta. Para más información, consulte el siguiente ejemplo:
SELECT DISTINCT t1.first_name_varchar, t2.performance_rating_real, t1.team_head_varchar FROM phoenix.tm_lh_engine.employee t1, phoenix.tm_lh_engine.departments t2 WHERE EXISTS ( SELECT 1 FROM phoenix.tm_lh_engine.departments t3 WHERE t3.department_id_bigint = t2.department_id_bigint )
El catálogo Hive no admite el formato CSV para crear una tabla de columnas de tipo int
El catálogo Hive no admite el formato CSV para crear columnas de tipo int de tabla. Se muestra el error siguiente:
presto> create table hive_data.hive_schema.intcsv ( type int ) with ( format = 'CSV' ) ;
Query 20241017_021409_00059_fmcyt failed: Hive CSV storage format only supports VARCHAR (unbounded). Unsupported columns: type integer
Solución: Utilice las siguientes opciones para el catálogo Hive:
- Crear tabla en varchar.
- Cree vistas que conviertan las columnas a sus tipos de datos originales.
Comportamiento incoherente de la ingestión de archivos CSV y Parquet
A pesar de que las especificaciones de diseño establecen que los archivos CSV sólo deben ser ingestados en tablas creadas a partir de archivos CSV, y los archivos parquet sólo deben ser ingestados en tablas creadas a partir de archivos parquet, existe una discrepancia en el comportamiento real en el que los usuarios pueden ingestar archivos CSV en tablas parquet. Esto puede dar lugar a resultados inesperados, problemas de calidad de los datos o problemas de rendimiento si el esquema o el formato del archivo CSV o parquet no coinciden con la estructura esperada de la tabla de destino.
Asociaciones de archivos no válidas en el grupo de recursos Presto a través de la interfaz de usuario y problemas de reinicio del motor
Cuando un archivo no válido se asocia para un motor en Presto grupo de recursos a través de watsonx.data UI, el motor experimentará un reinicio. Sin embargo, la interfaz de usuario puede mostrar incorrectamente que el motor está utilizando el archivo recién asignado.
Solución: Si descubre que el nuevo archivo no está asociado con el entorno watsonx.data, póngase en contacto con el soporte de IBM para obtener más ayuda.
Soporte de tipos de datos de tiempo en Hive e Iceberg
Hive: El catálogo Hive no admite de forma nativa el tipo de datos de tiempo.
Iceberg: Iceberg soporta el tipo de datos de tiempo.
Solución alternativa: Para permitir el correcto manejo de los datos de tiempo en las tablas Iceberg, la propiedad hive.parquet-batch-read-optimization-enabled
debe establecerse en false
.
Los ficheros con esquemas diferentes dan lugar a valores nulos
watsonx.data ahora admite la ingesta de tipos de archivo compatibles con esquemas variables. Sin embargo, cuando las columnas de estos archivos tienen esquemas distintos, los valores de esas columnas se establecen en null.
Caracteres especiales no admitidos en la creación de esquemas, tablas y almacenes
No se admiten los siguientes caracteres especiales al crear esquemas, tablas y almacenes:
Esquemas ( Hive e Iceberg): $
, ^
, +
, ?
, *
, {
, [
, (
, )
y /
.
Tablas ( Hive ): $
, ^
, +
, ?
, *
, {
, [
, (
, )
, /
, }
, "
, y '
(La creación
de tablas dentro de un nombre de esquema que comience por el carácter especial @
provocará un error).
Tablas (Iceberg):$
, ^
, +
, ?
, *
, {
, [
, (
, )
, /
, @
, }
, "
, y '
.
Lugar de almacenamiento: $
, ^
, +
, ?
, *
, {
, [
, (
, }
, @
, "
, y '
.
Se recomienda no utilizar caracteres especiales como el signo de interrogación (?), el guión (-), el asterisco (*) o caracteres delimitadores como \r, \n, y \t en nombres de tablas, columnas y esquemas. Aunque estos caracteres especiales son compatibles y se pueden crear tablas, columnas y esquemas, su uso puede causar problemas al ejecutar el comando INSERT o al aplicar políticas de acceso para los mismos.
Para garantizar una experiencia perfecta, siga la lista que aparece a continuación:
- Los nombres de esquema pueden contener letras, números o uno de los siguientes:
!
,#
,&
,]
,}
,<
,>
,=
,%
y@
. - Los nombres de las tablas pueden contener letras, números o uno de los siguientes:
!
,#
,&
,]
,}
,<
,>
,=
y;
. - Las columnas pueden contener letras, números uno de
!
,#
,&
,[
,]
,<
>
,_
,:
y@
.
La operación ALTER TABLE
falla en el envío de trabajos de Spark
Los trabajos de Spark que crean un esquema, una tabla y luego intentan una operación ALTER TABLE
pueden encontrarse con un authz.AccessControlException
debido a permisos insuficientes.
Esto ocurre porque, aunque la creación del esquema y la tabla se han realizado correctamente, el trabajo intenta ejecutar la operación ALTER TABLE
antes de que los datos del metastore se actualicen con los detalles del esquema y
la tabla recién creados.
Solución: Para evitar errores de acceso denegado, debe proporcionar un retardo de tiempo entre cada operación que implique la creación de nuevos esquemas o tablas dentro del mismo Python.
Solución: Puede desactivar DAS o asegurarse de que sus buckets o almacenamiento de objetos están configurados con puntos finales HTTPS.
Al intentar leer tablas Parquet v2 a través de Presto (C++) se produce un error
Al intentar leer tablas Parquet v2 a través de Presto (C++) que fueron creadas mediante Gestor de datos en watsonx.data, da el siguiente error:
Error in ZlibDecompressionStream::Next
Resolución: Presto (C++) actualmente no soporta la lectura de tablas Parquet v2. Debe copiar los datos a una nueva tabla en formato v1 para que sean compatibles para su lectura con Presto (C++).
-
Establezca la propiedad de sesión en PARQUET_1_0:
set session <catalog_name>.parquet_writer_version = 'PARQUET_1_0';
-
Ejecute el siguiente comando para copiar los datos en una nueva tabla:
create table <catalog name>.<schema name>.<table name> as (select * from <originaltablename>;
Actualmente, la ingesta de Spark no admite caracteres especiales como comillas, tildes inversas y paréntesis para nombres de columnas de tablas particionadas.
Al intentar consultar tablas relacionadas con Query History and Monitoring Management (QHMM) utilizando motores Presto (C++) podrían producirse errores
Al intentar consultar tablas relacionadas con QHMM utilizando motores Presto (C++), es posible que se produzcan errores debidos a formatos de archivo no compatibles. Presto (C++) sólo admite los formatos Parquet v1. No se puede utilizar Presto (C++) para consultar datos o tablas en otros formatos.
Solución: Puede pasar a utilizar motores Presto (Java) para consultar tablas relacionadas con QHMM.
Error de límite de concurrencia alcanzado en el servidor de vuelo
Es posible que se produzca un error de límite de concurrencia del servidor alcanzado al utilizar el servidor de vuelo para ejecutar consultas. Esto ocurre cuando el servidor experimenta un alto uso de memoria debido a un gran número de peticiones concurrentes.
Solución: Aumente el número de cápsulas de vuelo o reestructure para simplificar las consultas y reducir el número de subconsultas. Ajuste el número de réplicas en función de la carga de su sistema y de los recursos disponibles.
Utilice el siguiente comando para escalar el número de pods para el despliegue de wdp-connect-flight
:
oc scale deployment wdp-connect-flight --replicas=<number of replicas>
Por ejemplo, si necesita escalar el número de pods a 36, ejecute el siguiente comando:
oc scale deployment wdp-connect-flight --replicas=36
Reconocimiento incorrecto de fechas gregorianas en Presto con Hive tablas Parquet
Presto presenta problemas al procesar fechas históricas anteriores a 0200-01-01
, concretamente cuando se almacenan en tablas Hive formateadas como Parquet. Este problema se produce debido a la conversión entre los calendarios gregoriano
y juliano, que se implementaron en 1582-10-15
. Las fechas anteriores a esta fecha límite son malinterpretadas por Presto.
Información incompleta sobre la longitud de las columnas en la salida SHOW COLUMNS
La consulta SHOW COLUMNS
en Presto actualmente proporciona información sobre las columnas incluyendo nombre, tipo de datos, detalles adicionales (extra) y comentarios. Este problema pone de manifiesto que la funcionalidad existente
carece de detalles sobre la longitud de los tipos de datos basados en caracteres (CHAR y VARCHAR). Mientras que algunos conectores devuelven la longitud real definida durante la creación de la tabla, otros pueden proporcionar un valor por
defecto o ninguna información.
Para solucionar esta limitación, se han añadido tres nuevas columnas a la salida SHOW COLUMNS
:
-
Escala: Aplicable al tipo de dato DECIMAL, indica el número de dígitos después del punto decimal.
-
Precisión: Aplicable a tipos de datos numéricos, especificando el número total de dígitos. (Predeterminado: 10)
-
Longitud: Destinado a los tipos de datos CHAR y VARCHAR, representa el número máximo de caracteres permitidos.
Limitaciones actuales:
-
Es posible que la longitud indicada en la columna
Length
no siempre refleje el tamaño real definido en el esquema de la tabla debido a limitaciones del conector. -
Los conectores que no proporcionan información sobre la longitud mostrarán un valor por defecto o nulo dependiendo del conector.
Error de cálculo de OPT_SORTHEAP en el optimizador de consultas
Debido a un error de cálculo en el ajuste de configuración del Optimizador de consultas para el valor de OPT_SORTHEAP
, el rendimiento del Optimizador de consultas podría verse afectado.
Solución: Para resolver el error de cálculo de OPT_SORTHEAP
en el Optimizador de consultas, complete los siguientes pasos para actualizar la configuración como OPT_SORTHEAP= <initial_value>
a
OPT_SORTHEAP <initial_value>/20
.
- Configure la variable de entorno
PROJECT_CPD_INSTANCE
que apunta al espacio de nombres donde está instalado watsonx.data.
export PROJECT_CPD_INSTANCE=<wxd_namespace
- Edita el valor de
OPT_SORTHEAP
aOPT_SORTHEAP <initial_value>/20
ejecutando el siguiente comando.
oc edit db2uinstance lakehouse-oaas -n $PROJECT_CPD_INSTANCE
- Espera un poco a que el
STATE
cambie aReady
paralakehouse-oaas
y ejecuta el siguiente comando.
watch "oc get db2uinstance -n $PROJECT_CPD_INSTANCE"
Limitaciones -Presto (C++)
- Presto (C++) actualmente no admite catálogos de bases de datos.
- Parquet es el único formato de archivo compatible.
- Hive El conector es compatible.
- La tabla Iceberg por defecto sólo tiene soporte de lectura con formato Parquet v1.
- Se admiten consultas TPC-H/TPC-DS.
DELETE FROM
yCALL SQL
Las declaraciones no son compatibles.START
,COMMIT
, yROLLBACK
Las transacciones no son compatibles.- Tipos de datos
CHAR
,TIME
, yTIME WITH TIMEZONE
no son compatibles. Estos tipos de datos están subsumidos porVARCHAR
,TIMESTAMP
, yTIMESTAMP WITH TIMEZONE
.IPADDRESS
,IPPREFIX
,UUID
,kHYPERLOGLOG
,P4HYPERLOGLOG
,QDIGEST
, yTDIGEST
no son compatibles.VARCHAR
sólo admite una longitud limitada.Varchar(n)
con una longitud máxima limitada no se admite.TIME
yTIME WITH TIMEZONE
se apoya en el desarrollo comunitario.TIMESTAMP
Las columnas de los archivos Parquet no se pueden leer.
- Funciones escalares:
IPFunctions
,QDigest
,HyperLogLog
y la internacionalización geoespacial no son compatibles.
- Funciones agregadas:
QDigest
, Las métricas de clasificación y la entropía diferencial no son compatibles.
- S3 yS3 Se admiten sistemas de archivos compatibles (tanto de lectura como de escritura).
Presto (C++) no puede consultar una tabla particionada externa
Cuando consulta una tabla externa con CHAR
columnas de tipo de datos, la consulta no se puede ejecutar. Este problema ocurre debido a la limitación quePresto (C++) no es compatible CHAR
tipos de datos.
Solución: Cambia la columna CHAR
tipo de datos por VARCHAR
tipo de datos.
Acceso a las tablas Hive e Iceberg en el mismo catálogo de metastore de pegamento
Al usar elAWS Glue Data Catalog para administrar un depósito o ubicación de almacenamiento que contenga Iceberg yHive tablas, intentando acceder a las tablas Iceberg desde elHive catálogo da,Not a Hive table
error al intentar accederHive
Las tablas del catálogo Iceberg ofrecen,Not an Iceberg table
error.
Usar ID como nombre de columna enCassandraCREATE TABLE
EnCassandra, no puede crear una tabla con una columna llamada ID
mientras usa unCassandra conector a travésPresto. Esto es porque ID
es una palabra clave reservada para elCassandra controlador utilizado porPresto, que
genera automáticamente un UUID para cada fila. Al intentar crear una tabla con un ID de nombre de columna, aparece un mensaje de error que indica una declaración de columna duplicada de la siguiente manera: Columna duplicada id
declaración para la mesa tm_lakehouse_engine_ks.testtable12
Solución: Evite utilizar ID
como nombre de columna al crear tablas Cassandra a través de Presto.
El rol de usuario con la política CreateCollection
L3 falla al crear la colección en Milvus
Los usuarios con User role
al crear colecciones en Milvus con pymilvus pueden fallar al utilizar los métodos ORM Connection
y MilvusClient Connection
.
Solución: Debe seguir las instrucciones:
ORM Connection
: El usuario requiere ambosDescribeCollection yCreateCollection privilegios otorgados en elL3 página de política. Debe seleccionar todas las colecciones en una base de datos al otorgar DescribeCollection
privilegio en elL3 política a través de la consola web.
MilvusClient Connection
: Solo CreateCollection
El privilegio es necesario en elL3 página de política. Sin embargo, el primer intento de crear una colección fallará.
- Ejecute el
create_collection
funcionar una vez. - Vuelva a ejecutar el
create_collection
funcionar nuevamente. Esto permite que las políticas se sincronicen y la creación de la colección se realizará correctamente.
Caracteres especiales y mayúsculas y minúsculas que afectan la sincronización de datos
Al sincronizar datos entre depósitos que contienen tablas o esquemas con caracteres especiales o letras mayúsculas y minúsculas mixtas en sus nombres, es posible que encuentre los siguientes comportamientos inesperados:
- Tablas o esquemas con ciertos caracteres especiales.
%
,,
,{
,)
,(
,@
,$
,[
,:
sus datos se omitirán por completo durante la sincronización. - Las tablas o esquemas con letras mayúsculas o mayúsculas mixtas se convertirán a minúsculas antes de la sincronización.
Solución temporal: Evite utilizar caracteres especiales y mayúsculas y minúsculas en los nombres de tabla y esquema. Cambie el nombre de las tablas y esquemas existentes para utilizar sólo los caracteres soportados.
Falta la validación de datos para los puntos finales de almacenamiento Amazon S3
Actualmente, la interfaz de usuario (IU) no realiza la validación de datos para los puntos finales asociados con el tipo de almacenamiento Amazon S3.
Uso de alias incorrecto en la cláusula WITH
y USE catalog.schema
Cláusula WITH
: al hacer referencia a datos dentro de la cláusula WITH
, utilice el nombre de alias exacto asignado durante su definición. El uso de un alias incorrecto desencadena el siguiente mensaje de error.
Schema must be specified when session schema is not set
Uso de USE catalog.schema
junto con la cláusula WITH
: cuando se especifican tablas utilizando WITH
y USE catalog.schema
, las consultas con nombres de alias incorrectos generarán el siguiente
error.
Table does not exist
Interpretación literal de cadena enPresto (Java )
Presto (Java ), de forma predeterminada interpreta los literales de cadena como VARCHAR, a diferencia de muchos otros sistemas de bases de datos que los tratan como CHAR.
EnPresto (Java ), las comparaciones de cadenas se realizan con los caracteres reales presentes en la cadena, excluyendo los espacios finales. Esto puede hacer que las consultas devuelvan resultados incorrectos al trabajar con series que pueden contener espacios finales, ya que estos espacios no se tienen en cuenta durante la comparación.
Nombres de tabla con varios puntos
Presto (Java ) no admite la creación o consulta de nombres de tablas que contengan tres o más puntos consecutivos en su nombre. Los intentos de hacer referencia a dichas tablas en las consultas pueden dar lugar a errores.
El usuario sigue siendo visible en la página Control de accesos de un motor después de eliminar el usuario de IAM.
La autenticación LDAP no está soportada para el conector Teradata.
El conector watsonx.data Teradata no da soporte actualmente a LDAP (Lightweight Directory Access Protocol) para la autenticación de usuarios.
Solución temporal: Si encuentra el error 502, vuelva a cargar la página de la interfaz de usuario del historial de Spark después de esperar de 1 a 5 segundos. Esto debería permitir tiempo suficiente para que el servidor pase a estar operativo.
Anomalía en la creación de esquemas de catálogos cruzados en Presto.
Existe una anomalía en la creación de esquemas para los catálogos Hive e Iceberg gestionados por Presto. Cuando se utiliza un servicio común Hive Metastore para varios catálogos (por ejemplo, un catálogo Iceberg y un catálogo Hive, o dos catálogos Iceberg o Hive ), la creación de un esquema en un catálogo podría crearlo en un catálogo incorrecto. Esto se produce si la ubicación especificada durante la creación del esquema pertenece a un catálogo distinto del previsto.
Solución: Siempre debe proporcionar explícitamente la ruta de almacenamiento correcta asociada al catálogo de destino cuando utilice sentencias CREATE SCHEMA
en Presto. Esto garantiza que el esquema se cree en la
ubicación deseada.
Presto (Java ) consultas con muchas columnas y un tamaño que excede el límite predeterminado.
Presto (Java ) consultas que involucran varias tablas con una gran cantidad de columnas (por ejemplo, 1000 columnas por tabla o más) en el SELECT
La cláusula puede encontrar problemas de rendimiento en todos los entornos de implementación.
El optimizador iterativo excede el tiempo de espera cuando max_reorder_joins
se establece en 5 o superior (el tiempo de espera predeterminado es de 3 minutos) y da el siguiente error:
The optimizer exhausted the time limit of 180000 ms
Para consultas que exceden el valor predeterminado max-task-update-size
límite (16MB enPresto (Java )), es posible que observes una TaskUpdate size exceeding this limit
error (el valor específico del límite depende
de la consulta real).
Solución temporal:
-
Puede mejorar el rendimiento de las consultas inhabilitando temporalmente la regla
reorder_joins
utilizando la siguiente propiedad de sesión:set session reorder_joins = false;
-
Aumenta el
max-task-update-size
valor en el config.properties presentar si el problema involucra unTaskUpdate size exceeding the limit
error y reiniciarPresto (Java ).
Ejemplo:
experimental.internal-communication.max-task-update-size=64MB
Limitación: Transacciones no soportadas en bases de datos Informix no registradas.
En watsonx.data, al intentar ejecutar consultas con implicaciones transaccionales en bases de datos Informix no registradas, las consultas fallarán. Esto se debe a que las bases de datos Informix no registradas, por diseño, no dan soporte a transacciones.
Limitación: Netezza Performance Server Limitación de sentencias INSERT.
Netezza Performance Server actualmente no da soporte a la inserción de varias filas directamente en una tabla utilizando la cláusula VALUES. Esta funcionalidad está limitada a las inserciones de una sola fila. Consulte el Netezza Performance Server documentación oficial para obtener detalles sobre la sentencia INSERT.
El ejemplo siguiente que utiliza VALUES para varias filas no está soportado:
INSERT INTO EMPLOYEE VALUES (3,'Roy',45,'IT','CityB'),(2,'Joe',45,'IT','CityC');
Solución temporal: Utilice una subconsulta con SELECT y UNION ALL para construir un conjunto de resultados temporal e insertarlo en la tabla de destino.
INSERT INTO EMPLOYEE SELECT * FROM(SELECT 4,'Steve',35,'FIN','CityC' UNION ALL SELECT 5,'Paul',37,'OP','CityA') As temp;
Problema: Milvus no responde a las consultas.
Milvus puede no responder a las consultas cuando se intenta cargar colecciones o particiones que exceden la capacidad de memoria disponible. Esto ocurre porque todas las operaciones de búsqueda y consulta en Milvus se ejecutan en memoria, lo que requiere que se cargue toda la colección o partición antes de realizar la consulta.
Solución temporal:
-
Tenga en cuenta las limitaciones de memoria de su implantación de Milvus y evite cargar colecciones o particiones excesivamente grandes.
-
Si Milvus deja de responder a las consultas, utilice la API de Milvus adecuada para descargar o liberar algunas colecciones de la memoria. Un ejemplo utilizando el SDK de Python:
collection.release()
Problema: Recuento inexacto de filas tras supresiones en Milvus.
La propiedad collection.num_entities
podría no reflejar el número real de filas de una colección Milvus tras las operaciones de eliminación. Esta propiedad proporciona una estimación y no puede tener en cuenta las entidades suprimidas.
Para obtener un recuento preciso de filas, ejecute una consulta count(*)
en la colección. Esto proporciona un recuento preciso incluso después de las supresiones.
Sintaxis de Pymilvus:
collection = pymilvus.Collection(...)
collection.query(expr='', fields=['count(*)'])
Limitaciones: Operaciones de Db2 no soportadas.
watsonx.data actualmente no da soporte a la operación ALTER TABLE DROP COLUMN para las tablas organizadas en columnas de Db2.
De forma predeterminada, las instancias de Db2 crean tablas en formato organizado por columnas.
watsonx.data no da soporte a la creación de tablas organizadas en filas en Db2.
Limitaciones: Manejo de valores nulos en Elasticsearch.
El conector Elasticsearch requiere una definición explícita de correlaciones de índice para que los campos manejen valores nulos al cargar datos.
Limitaciones: Carga de JSON anidado con Elasticsearch.
El conector Elasticsearch requiere que los usuarios especifiquen explícitamente estructuras JSON anidadas como matrices de tipo ROW para una carga y consulta adecuadas. Para procesar estas estructuras, utilice la operación UNNEST.
Limitación: Los usuarios pueden crear 3 instancias del servicio Milvus para una única instancia de watsonx.data en IBM Cloud.
Problema: No se pueden crear vistas en Presto.
Presto describe una vista en una base de datos mapeada como una TABLA en lugar de una VISTA. Esto es evidente para el programa JDBC que se conecta al motor Presto.
Problema: El usuario no se elimina del control de acceso al catálogo al revocar el acceso a los datos.
Cuando se otorga acceso de usuario a un usuario añadiéndolo a las políticas de control de datos utilizando la pantalla Control de acceso, el usuario se lista correctamente en el catálogo. Al revocar el acceso de usuario desde la página Control de acceso, el usuario permanece en la lista del catálogo y continúa teniendo acceso de usuario.
Problema: No se pueden ver los catálogos esperados dePresto (Java ).
Los usuarios con privilegios de administrador no pueden ver lo esperadoHive yPostgreSQL catálogos dePresto (Java ).
Problema: La interfaz de usuario de la consola lista usuarios no válidos.
watsonx.data usuario (user1 ) invita a un nuevo usuario (user2 ) a la cuenta utilizando el Administrar acceso y usuarios pantalla (Administrar > Acceso (IAM) > Administrar acceso y usuarios ) y otorga acceso a un rol (MetastoreAccess, Visor, Operador, Editor, Administrador). User2 obtiene acceso a los recursos de la instancia de watsonx.data a través de la cuenta de user1. Además, a user2 se le otorga acceso a los datos a nivel de recurso añadiendo a las políticas de control de datos utilizando la pantalla Control de acceso. Cuando user1 elimina user2 de la cuenta de user1, user2 se sigue listando en la pestaña Control de acceso a nivel de recurso.
Problema: No se puede ver el esquema creado.
Cuando un usuario con el rol Usuario y el acceso Crear (el usuario sólo tiene el acceso Crear) se añade a una base de datos externa, no puede ver los esquemas que ha creado. Aunque el usuario puede crear esquemas, no puede verlos. La respuesta del sistema es la siguiente:
presto:default> show schemas;
Schema
--------
(0 rows)
Solución temporal: Proporcione un privilegio de selección para el esquema que ha creado el usuario.
Problema: Acceso denegado al consultar una base de datos externa.
Cuando un usuario con el rol de usuario y acceso de creación (el usuario sólo tiene acceso de creación), se añade a una base de datos externa, no puede ejecutar la consulta de selección desde la tabla que ha creado. Aunque el usuario puede conectarse
alPresto (Java ) motor y crear tablas y esquemas, no pueden realizar consultas desde la tabla. El sistema muestra un mensaje Access Denied
.
Query 20230608_132213_00042_wpmk2 failed: Access Denied: Cannot select from columns [id] in table or view tab_appiduser_01
Solución temporal: Proporcione un privilegio de selección para la tabla que ha creado el usuario.
Problema: Esquema creado bajo un catálogo diferente.
Los esquemas están disponibles en los catálogos de Iceberg y Hive. Cuando se crea un esquema en el catálogo de Iceberg, se lista en el catálogo de Hive y viceversa.
Asunto:Presto (Java ) no admite la eliminación de tablas Iceberg.
Problema: DROP SCHEMA en Db2.
En Db2, el esquema sólo se puede descartar si está vacío. La iniciación de la sentencia DROP SCHEMA
en un esquema no vacío puede dar como resultado Db2 Error SQL SQLCODE=-478
y SQLSTATE=42893
.
Problema: sentencia CREATE VIEW soportada parcialmente por Db2.
El conector de Db2 soporta parcialmente la sentencia CREATE VIEW
. ElPresto (Java ) la sintaxis SQL admitida no incluye la creación de vistas con nombres de columnas personalizados (diferentes a los nombres de columnas de la tabla).
Problema: sentencia CREATE VIEW soportada parcialmente por NPSaaS.
El conector NPSaaS soporta parcialmente la sentencia CREATE VIEW
. ElPresto (Java ) La sintaxis SQL admitida no incluye la creación de vistas con nombres de columnas personalizados (diferentes a los nombres de columnas de la tabla).
Asunto:Presto (Java ) no reconoce la ruta como un directorio.
Cuando creas una nueva tabla con unPresto (Java )Hive conector que utiliza unS3 carpeta desde una ubicación externa,Presto (Java ) no reconoce la ruta como directorio y podría producirse un error.
Por ejemplo, al crear una tabla de clientes en el directorio de destino DBCERT/tbint
en un grupo denominado dqmdbcertpq
utilizando la consola de IBM Cloud UX y Aspera S3, se encuentra el siguiente error: External location must be a directory
.
CREATE TABLE "hive-beta"."dbcert"."tbint" (
RNUM int , CBINT bigint
) WITH (
format='PARQUET', external_location = 's3a://dqmdbcertpq/DBCERT/tbint'
);
Query 20230509_113537_00355_cn58z failed: External location must be a directory
Los objetos de un sistema de archivos se almacenan como objetos y su vía de acceso. El objeto y la vía de acceso deben tener metadatos asociados. Si la ruta no está asociada con los metadatos,Presto (Java ) no reconoce el objeto y responde que la ruta no es un directorio.
Problema: Asignar privilegio de otorgamiento o revocación.
La asignación del privilegio Otorgar o Revocar a un usuario a través de la política de acceso no funciona como se esperaba en los escenarios siguientes:
-
User_A añade un grupo y un catálogo Hive (por ejemplo,
useracat02
). -
User_A crea un esquema y una tabla.
-
A User_B y User_C se les asignan roles de Usuario en el catálogo.
-
User_A añade la política de permitir otorgamiento a User_B.
-
User_B se conecta al catálogo y ejecuta
grant select
en User_C.presto:default> grant select on useracat02.schema_test_01.tab_1 to "6ff74bf7-b71b-42f2-88d9-a98fdbaed304";
-
Cuando el User_C se conecta al catálogo y ejecuta el mandato
select
en la tabla, el mandato falla con el mensaje de acceso denegado.presto:default> select * from useracat02.schema_test_01.tab_1; Query 20230612_073938_00132_hthnz failed: Access Denied: Cannot select from columns [name, id, salary, age] in table or view tab_1
Problema: Creación de un esquema sin una ubicación.
Cuando crea un esquema sin una ubicación, no aparece en la lista de esquemas de ningún catálogo. Por ejemplo, si crea un esquema sin especificar la ubicación del grupo, el esquema se crea en HMS y no en el grupo. Cuando intenta crear un nuevo esquema con el mismo nombre, falla y responde que el esquema ya existe.
Solución temporal: especifique la ubicación del grupo al crear un esquema.
Problema: Nombres exclusivos para esquema y grupo.
No se pueden crear un esquema y un grupo con el mismo nombre. Por ejemplo, si crea un esquema que se denomina "ventas" en un catálogo, no se puede utilizar el mismo nombre para otro esquema en otro catálogo. De forma similar, si registra un grupo con el nombre "salesbucket", no se puede registrar otro grupo con el mismo, incluso si el grupo se encuentra en un almacén de objetos diferente.
Solución temporal: Utilice nombres exclusivos al crear esquemas y grupos.
Problema: Se está creando el esquema para la tabla de destino.
Debe crear un esquema para la tabla de destino si el esquema no existe.
Problema: La ingesta falla si el archivo CSV contiene un registro erróneo.
La herramienta ibm-lh no da soporte a la omisión del número máximo de registros erróneos para archivos CSV si el campo de discrepancia es mayor que la definición de tabla.
Problema: Creando ubicación de esquema con vía de acceso.
Utilice una de las siguientes opciones de ubicación al crear un esquema:
- Ubicación que apunta a un grupo/subvía de acceso sin un
/
final. - Ubicación que apunta a un grupo/subvía de acceso con un
/
final-Recomendado para una mejor estructuración.
Aunque puede utilizar una ubicación que apunte a un grupo sólo con o sin un /
de cola, puede dar lugar a un error. Por lo tanto, se recomienda utilizar una subvía de acceso.
Asunto:Presto (Java ) no apoye AS OF
con mesas de iceberg.
Presto (Java ) no apoye AS OF <time stamp>
comando en una consulta SELECT.
Solución: Invocar CALL iceberg_data_rollback_to_snapshot
para pasar a la indicación de fecha y hora necesaria.
Si utiliza CALL iceberg_data_rollback_to_snapshot
con una indicación de fecha y hora, no puede llamar al procedimiento almacenado para pasar a una indicación de fecha y hora posterior. Utilice Spark SQL como alternativa.
Problema: Sólo el creador tiene acceso DROP en la tabla de Apache Hive (API).
Sólo el creador de una tabla puede descartar la tabla que se crea en el catálogo Apache Hive. Otros usuarios no pueden descartar la tabla incluso si tienen un acceso DROP explícito a la tabla. Reciben el mensaje Access Denied
.
Problema: Los certificados proporcionados por el usuario no están soportados por watsonx.data.
Actualmente, los certificados proporcionados por el usuario no están soportados en watsonx.data al añadir conexiones de base de datos, grupos de almacenes de objetos o al utilizar el programa de utilidad ibm-lh.
Problema: No hay columnas para analizar desde el error de archivo.
Cuando intenta ingerir la carpeta desde AWS S3 utilizando la herramienta ibm-lh, se puede encontrar el siguiente error si no hay archivos vacíos en la carpeta:
No columns to parse from file
Solución temporal: En primer lugar, liste las carpetas dentro del grupo utilizando el mandato aws s3 ls
. Si no se listan archivos vacíos, copie todos los archivos en otra carpeta utilizando el mandato aws s3 cp
.
Los caracteres especiales en los nombres de tabla de destino pueden provocar anomalías de ingestión.
La ingestión falla si un nombre de tabla de destino contiene caracteres especiales al ingerir a través de la consola web.
Solución temporal: Puede ingerir datos utilizando la ingestión a través de la CLI de Spark.
Limitación:Presto (Java ) no soporta VARBINARY
tipo de datos.
La versión actual dePresto (Java ) no admite cadenas binarias con longitud. La ejecución de una sentencia ALTER TABLE
en una base de datos genera el siguiente error:
Unknown type 'varbinary(n)' for column 'testcolumn'
Esta es una limitación en Preso y no una limitación en watsonx.data.
Limitación: Haga una copia de seguridad de sus datos para evitar la pérdida de datos mientras trabaja con el entorno de desarrollo VS Code - Spark Labs.
Dado que los laboratorios Spark son efímeros por naturaleza, debe realizar copias de seguridad periódicas de los datos almacenados para evitar posibles pérdidas de datos durante las actualizaciones o una caída del maestro Spark.