Problemas Conhecidos (Limitações)
As seguintes limitações e problemas conhecidos se aplicam ao site IBM® watsonx.data.
Limitação da configuração da rede privada virtual
Os pontos de extremidade privados não são compatíveis com mecanismos externos, como IBM Db2 Warehouse, IBM Netezza e IBM Analytics Engine (Spark).
HDFS a adição de balde não é compatível com o CPDCTL
Atualmente, o plug-in cpdctl wx-data não oferece suporte à adição de HDFS buckets.
IBM watsonx.data Presto o conector em Software Hub 5.1.1 e posterior não pode se conectar a IBM watsonx.data Instância de nuvem
IBM watsonx.data Presto o conector não consegue se conectar à instância IBM watsonx.data devido a um erro 520 do Cloudflare. Esse problema ocorre quando várias chamadas simultâneas são feitas para a API GET /engines
, especialmente
quando a instância watsonx.data tem um grande número de políticas.
A modificação das credenciais do bucket inicial do mecanismo Spark pode interromper os dados e as operações
A atualização das credenciais de acesso para um bucket de armazenamento que foi designado como o bucket inicial do mecanismo Spark durante o processo de provisionamento pode levar a problemas de acesso aos dados e falhas operacionais.
Os administradores do metastore e os visualizadores do metastore não conseguem visualizar o esquema e os detalhes da tabela
Um usuário com privilégios de administrador de metastore e visualizador de metastore no espaço de trabalho de consulta e no Gerenciador de dados não pode visualizar os detalhes do esquema e da tabela, a menos que uma política de visualização seja definida para esquemas e tabelas.
Os cenários de evolução de esquema falham em Presto (C++)
Quando você remove e/ou adiciona colunas da tabela, as consultas podem falhar. Por exemplo, veja a sequência de instruções abaixo, após a qual as consultas na tabela falham.
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)
Solução alternativa: Para PARQUET
, execute o seguinte comando na sessão:
set session <catalog-name>.parquet_use_column_names=true;
Substitua <catalog-name>
pelo catálogo real que está sendo usado.
Ou defina hive.parquet.use-column-names=true
nas propriedades do catálogo. Para ORC
, defina hive.orc.use-column-names=true
nas propriedades do catálogo.
Connection Information
mostra um nome de usuário truncado
A página Connection Information
mostra um nome de usuário truncado, excluindo o prefixo ibmlhapikey_
para PowerBI
e Looker
.
Solução alternativa: Adicione o prefixo ibmlhapikey_
ao nome de usuário ao copiar manualmente o valor para permitir conexões com ferramentas de BI.
Problema com o caractere turco maiúsculo İ no banco de dados Oracle usando o conjunto de caracteres WE8ISO8859P9 ( ORA-00911 Error)
Em um banco de dados Oracle que usa o conjunto de caracteres WE8ISO8859P9, o caractere turco maiúsculo İ não é compatível com o modo OFF (padrão) do sinalizador de recursos de letras maiúsculas e minúsculas, o que leva a erros de caracteres inválidos em ORA-00911:.
Solução alternativa: Defina o sinalizador de recurso de casos mistos como ON.
A visualização padrão information_schema
de um catálogo lista esquemas e tabelas de outros catálogos
Se um usuário tiver mais de um catálogo, a visualização padrão do information_schema
exibirá os esquemas e as tabelas de outros catálogos também, independentemente dos catálogos associados ao mecanismo.
Hive os nomes de colunas externas com letras maiúsculas em toda a largura não podem ser reconhecidos quando file-column-names-read-as-lower-case está definido como true
Quando a propriedade file-column-names-read-as-lower-case do catálogo do presto worker é definida como true, ela converte os nomes de campo em letras maiúsculas ASCII para letras minúsculas ASCII. Como resultado, os dados em nomes de colunas com caracteres de largura total em maiúsculas não serão reconhecidos e aparecerão como "nulos".
Atualização de certificado necessária para a ingestão de dados
Se você encontrar problemas com as conexões da fonte de dados na descoberta de ingestão, revise os detalhes do certificado, pois a mensagem de erro atual não é clara. É provável que um certificado ausente/expirado esteja causando o problema.
Solução alternativa: Você deve manter certificados de segurança atualizados para poder fazer a ingestão.
Falha no trabalho do Spark devido à assinatura ADLS expirada durante a operação Write/Delete/Update
O trabalho do Spark falha com o seguinte erro quando executa a operação Write/Delete/Update em um armazenamento ADLS Gen1. Isso ocorre porque a assinatura do ADLS expira no meio do processo.
java.io.IOException: Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature
Solução alternativa: Defina o tempo de expiração da assinatura ADLS como um valor alto. Configure a propriedade spark.hadoop.spark.hadoop.wxd.cas.sas.expiry.period
para controlar o tempo de expiração da assinatura
ADLS. Atualize o valor padrão de 300s para 43200s.
Presto Limitação do tamanho da senha da CLI
Presto A CLI suporta um tamanho máximo de senha de 1 KB (1024 bytes). Se a senha exceder esse tamanho, o sistema não poderá aceitá-la no campo de senha; em vez disso, ela deverá ser exportada.
O tipo de dados timestamptz não é compatível com uma tabela ORC durante a atualização do console da Web watsonx.data
Os nomes de bancos de dados que contêm hifens ou espaços não podem ser consultados pelo mecanismo Spark em um notebook Python, mesmo quando a extensão de controle de acesso Spark apropriada tiver sido adicionada.
Os termos comerciais permanecem depois que a integração da camada de automação semântica é excluída do site IBM watsonx.data
Os termos comerciais que foram importados para IBM Knowledge Catalog para uma integração da camada de automação semântica (SAL) em watsonx.data não são removidos quando a integração é excluída. Isso pode resultar em termos comerciais duplicados se uma nova integração SAL for ativada posteriormente e os mesmos termos comerciais ou similares forem carregados novamente.
Solução alternativa: Para evitar termos comerciais duplicados, o administrador do cluster ou o usuário que criou originalmente o registro SAL deve excluir manualmente todos os termos comerciais que foram importados para a integração SAL.
A cláusula EXISTS nas tabelas Apache Phoenix gera uma exceção durante a execução do erro de consulta
As consultas que envolvem a cláusula EXISTS nas tabelas do site Apache Phoenix podem falhar inesperadamente, mesmo quando a coluna referenciada é válida. Isso ocorre devido a limitações na interpretação da cláusula EXISTS pelo site Apache Phoenix, especialmente em casos com estruturas de consulta ambíguas ou desalinhadas.
Solução alternativa: Para resolver essa limitação, aplique uma das seguintes estratégias:
-
Estabeleça uma relação clara entre a subconsulta e a consulta principal. Introduzir uma condição de filtro na subconsulta para criar uma relação significativa entre a subconsulta e a consulta principal. Por exemplo, where department_id_bigint IS NOT NULL na subconsulta. Para obter mais informações, consulte o exemplo a seguir:
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 )
-
Estabeleça uma relação clara entre as tabelas envolvidas unindo explicitamente as tabelas na subconsulta. Isso garante que a subconsulta seja contextualmente relevante e resolve o problema de execução. Por exemplo, where t3.department_id_bigint = t2.department_id_bigint na subconsulta. Para obter mais informações, consulte o exemplo a seguir:
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 )
O catálogo Hive não é compatível com o formato CSV para criar uma coluna do tipo int de tabela
O catálogo Hive não é compatível com o formato CSV para criar uma coluna do tipo int de tabela. O erro a seguir é exibido:
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
Solução alternativa: Use as seguintes opções para o catálogo Hive:
- Criar tabela em varchar.
- Crie uma exibição que converta as colunas em seus tipos de dados originais.
Comportamento inconsistente de ingestão de arquivos CSV e Parquet
Apesar de as especificações de design indicarem que os arquivos CSV só devem ser ingeridos em tabelas criadas a partir de arquivos CSV e que os arquivos parquet só devem ser ingeridos em tabelas criadas a partir de arquivos parquet, há uma discrepância no comportamento real em que os usuários podem ingerir arquivos CSV em tabelas parquet. Isso pode resultar em resultados inesperados, problemas de qualidade de dados ou problemas de desempenho se o esquema ou a formatação do arquivo CSV ou parquet não estiver alinhado com a estrutura esperada da tabela de destino.
Associações de arquivos inválidas no grupo de recursos Presto por meio da interface do usuário e problemas de reinicialização do mecanismo
Quando um arquivo inválido é associado a um mecanismo no grupo de recursos Presto por meio da interface do usuário watsonx.data, o mecanismo será reiniciado. No entanto, a interface do usuário pode exibir incorretamente que o mecanismo está usando o arquivo recém-atribuído.
Correção: Se você descobrir que o novo arquivo não está associado ao ambiente watsonx.data, entre em contato com o suporte da IBM para obter mais assistência.
Suporte ao tipo de dados de tempo em Hive e Iceberg
Hive: o catálogo Hive não suporta nativamente o tipo de dados de tempo.
Iceberg: O Iceberg é compatível com o tipo de dados de tempo.
Solução alternativa: Para permitir o tratamento correto dos dados de tempo nas tabelas Iceberg, a propriedade hive.parquet-batch-read-optimization-enabled
deve ser definida como false
.
Arquivos com esquemas diferentes resultam em valores nulos
watsonx.data agora suporta a ingestão de tipos de arquivos compatíveis com esquemas variados. No entanto, quando as colunas nesses arquivos têm esquemas distintos, os valores nessas colunas são definidos como nulos.
Caracteres especiais não suportados na criação de esquemas e tabelas
Os seguintes caracteres especiais não são aceitos na criação de esquemas e tabelas:
Esquemas ( Hive e Iceberg): $
, ^
, +
, ?
, *
, {
, [
, (
, )
, e /
.
Tabelas ( Hive ): $
, ^
, +
, ?
, *
, {
, [
, (
, )
, e /
. (A criação de tabelas em um nome de esquema que começa com o
caractere especial @
resultará em um erro).
Tabelas (Iceberg):$
, ^
, +
, ?
, *
, {
, [
, (
, )
, /
, e @
.
Recomenda-se não usar caracteres especiais, como ponto de interrogação (?), hífen (-), asterisco (*) ou caracteres delimitadores como \r, \n e \t em nomes de tabelas, colunas e esquemas. Embora esses caracteres especiais sejam suportados e tabelas, colunas e esquemas possam ser criados, usá-los pode causar problemas ao executar o comando INSERT ou aplicar políticas de acesso para o mesmo.
Para garantir uma experiência perfeita, siga a lista abaixo:
- Os nomes de esquemas podem conter letras, números ou um dos seguintes itens:
!
,#
,&
,]
,}
,<
,>
,=
,%
e@
. - Os nomes das tabelas podem conter letras, números ou uma das seguintes opções:
!
,#
,&
,]
,}
,<
,>
,=
e;
. - As colunas podem conter letras, números, um de
!
,#
,&
,[
,]
,<
>
,_
,:
, e@
.
A operação ALTER TABLE
falha no envio do trabalho do Spark
Os trabalhos do Spark que criam um esquema, uma tabela e, em seguida, tentam uma operação ALTER TABLE
podem encontrar um authz.AccessControlException
devido a permissões insuficientes.
Isso ocorre porque, embora a criação do esquema e da tabela seja bem-sucedida, o trabalho tenta executar a operação ALTER TABLE
antes que os dados do metastore sejam atualizados com os detalhes do esquema e da tabela recém-criados.
Resolução: Para evitar erros de acesso negado, você deve fornecer um atraso entre cada operação que envolva a criação de novos esquemas ou tabelas dentro do mesmo Python.
Solução alternativa: Você pode desativar o DAS ou certificar-se de que seus buckets ou armazenamento de objetos estejam configurados com pontos de extremidade HTTPS.
A tentativa de ler tabelas Parquet v2 por meio do Presto (C++) resulta em um erro
Quando você tenta ler as tabelas Parquet v2 por meio do Presto (C++) que foram criadas por meio do Gerenciador de dados em watsonx.data, ele apresenta o seguinte erro:
Error in ZlibDecompressionStream::Next
Correção: Presto (C++) atualmente não oferece suporte à leitura de tabelas Parquet v2. Você deve copiar os dados para uma nova tabela no formato v1 para que seja compatível com a leitura usando Presto (C++).
-
Defina a propriedade de sessão como PARQUET_1_0:
set session <catalog_name>.parquet_writer_version = 'PARQUET_1_0';
-
Execute o seguinte comando para copiar os dados em uma nova tabela:
create table <catalog name>.<schema name>.<table name> as (select * from <originaltablename>;
No momento, a ingestão do Spark não oferece suporte a caracteres especiais, como aspas, ticks posteriores e parênteses para nomes de colunas de tabelas particionadas.
A tentativa de consultar as tabelas relacionadas ao Query History and Monitoring Management (QHMM) usando os mecanismos Presto (C++) pode apresentar erros
Ao tentar consultar as tabelas relacionadas ao QHMM usando os mecanismos Presto (C++), você poderá encontrar erros devido a formatos de arquivo não suportados. Presto (C++) é compatível apenas com os formatos Parquet v1. Você não pode usar o Presto (C++) para consultar dados ou tabelas em outros formatos.
Correção: Você pode mudar para usar os mecanismos Presto (Java) para consultar tabelas relacionadas ao QHMM.
Erro de limite de simultaneidade do servidor atingido no servidor de voo
Você pode encontrar um erro de limite de simultaneidade do servidor atingido ao usar o servidor de voo para executar consultas. Isso ocorre quando o servidor apresenta alto uso de memória devido a um grande número de solicitações simultâneas.
Solução alternativa: Aumente o número de pods de voo ou reestruture para simplificar as consultas e reduzir o número de subconsultas. Ajuste o número de réplicas com base na carga do sistema e nos recursos disponíveis.
Use o seguinte comando para dimensionar o número de pods para a implantação wdp-connect-flight
:
oc scale deployment wdp-connect-flight --replicas=<number of replicas>
Por exemplo, se você precisar dimensionar o número de pods para 36, execute o seguinte comando:
oc scale deployment wdp-connect-flight --replicas=36
Reconhecimento incorreto de datas gregorianas em Presto com Hive tabelas Parquet
O Presto apresenta problemas ao processar datas históricas anteriores a 0200-01-01
, especificamente quando elas são armazenadas em tabelas Hive formatadas como Parquet. Esse problema ocorre devido à conversão entre os calendários
gregoriano e juliano, que foram implementados em 1582-10-15
. As datas anteriores a essa data de corte são interpretadas incorretamente pelo Presto.
Informações incompletas sobre o comprimento da coluna na saída SHOW COLUMNS
A consulta SHOW COLUMNS
em Presto atualmente fornece informações sobre colunas, incluindo nome, tipo de dados, detalhes adicionais (extra) e comentários. Esse problema destaca que a funcionalidade existente carece de detalhes sobre
o comprimento dos tipos de dados baseados em caracteres (CHAR e VARCHAR). Embora alguns conectores retornem o comprimento real definido durante a criação da tabela, outros podem fornecer um valor padrão ou nenhuma informação.
Para resolver essa limitação, três novas colunas foram adicionadas à saída SHOW COLUMNS
:
-
Escala: Aplicável ao tipo de dados DECIMAL, indicando o número de dígitos após o ponto decimal.
-
Precisão: Aplicável a tipos de dados numéricos, especificando o número total de dígitos. (Padrão: 10)
-
Comprimento: Destinado aos tipos de dados CHAR e VARCHAR, representando o número máximo de caracteres permitido.
Limitações atuais:
-
O comprimento informado na coluna
Length
pode nem sempre refletir o tamanho real definido no esquema da tabela devido a limitações do conector. -
Os conectores que não fornecem informações de comprimento exibirão um valor padrão ou nulo, dependendo do conector.
Erro de cálculo para OPT_SORTHEAP no Query Optimizer
Devido a um erro de cálculo na definição de configuração do Query Optimizer para o valor de OPT_SORTHEAP
, o desempenho do Query Optimizer pode ser afetado.
Resolução: Para resolver o erro de cálculo de OPT_SORTHEAP
no Query Optimizer, conclua as etapas a seguir para atualizar a configuração de OPT_SORTHEAP= <initial_value>
para OPT_SORTHEAP <initial_value>/20
.
- Configure a variável de ambiente
PROJECT_CPD_INSTANCE
que aponta para o namespace onde watsonx.data está instalado.
export PROJECT_CPD_INSTANCE=<wxd_namespace
- Edite o valor de
OPT_SORTHEAP
paraOPT_SORTHEAP <initial_value>/20
executando o seguinte comando.
oc edit db2uinstance lakehouse-oaas -n $PROJECT_CPD_INSTANCE
- Aguarde algum tempo até que o
STATE
mude paraReady
oulakehouse-oaas
e execute o seguinte comando.
watch "oc get db2uinstance -n $PROJECT_CPD_INSTANCE"
Limitações -Presto (C++)
- Presto O mecanismo (C++) atualmente não oferece suporte a catálogos de banco de dados.
- O Parquet é o único formato de arquivo suportado.
- Hive conector é suportado.
- A tabela Iceberg padrão só tem suporte de leitura com o formato Parquet v1.
- Consultas TPC-H/TPC-DS são suportadas.
DELETE FROM
eCALL SQL
declarações não são suportadas.START
,COMMIT
, eROLLBACK
transações não são suportadas.- Tipos de dados
CHAR
,TIME
, eTIME WITH TIMEZONE
não são suportados. Esses tipos de dados são subsumidos porVARCHAR
,TIMESTAMP
, eTIMESTAMP WITH TIMEZONE
.IPADDRESS
,IPPREFIX
,UUID
,kHYPERLOGLOG
,P4HYPERLOGLOG
,QDIGEST
, eTDIGEST
não são suportados.VARCHAR
suporta apenas um comprimento limitado.Varchar(n)
com um limite de comprimento máximo não é suportado.TIME
eTIME WITH TIMEZONE
é apoiado no desenvolvimento comunitário.TIMESTAMP
colunas em arquivos Parquet não podem ser lidas.
- Funções escalares:
IPFunctions
,QDigest
,HyperLogLog
e a internacionalização geoespacial não são suportadas.
- Funções agregadas:
QDigest
, Métricas de classificação e Entropia diferencial não são suportadas.
- S3 eS3 sistemas de arquivos compatíveis (leitura e gravação) são suportados.
Presto (C++) falha ao consultar uma tabela particionada externa
Quando você consulta uma tabela externa com CHAR
colunas de tipo de dados, a consulta não será executada. Esse problema ocorre devido à limitação quePresto (C++) não suporta CHAR
tipos de dados.
Correção: Altere a coluna de tipo de dados CHAR
para tipo de dados VARCHAR
.
Acessando as tabelas Hive e Iceberg no mesmo catálogo de metastore de cola
Ao usar oAWS Cole o Catálogo de Dados para gerenciar um bucket ou local de armazenamento contendo Iceberg eHive tabelas, tentando acessar tabelas Iceberg a partir doHive catálogo dá,Not a Hive table
erro e tentativa de acessoHive
tabelas do catálogo Iceberg fornecem,Not an Iceberg table
erro.
Usando ID como nome de coluna emCassandraCREATE TABLE
EmCassandra, você não pode criar uma tabela com uma coluna chamada ID
enquanto estiver usando umCassandra conector atravésPresto. Isto é porque ID
é uma palavra-chave reservada para oCassandra driver que é usado porPresto,
que gera automaticamente um UUID para cada linha. A tentativa de criar uma tabela com um ID de nome de coluna resulta em uma mensagem de erro indicando uma declaração de coluna duplicada como segue: Coluna duplicada id
declaração
para mesa tm_lakehouse_engine_ks.testtable12
Correção: Evite usar ID
como um nome de coluna ao criar tabelas Cassandra por meio de Presto.
A função de usuário com a política CreateCollection
L3 não consegue criar a coleção no Milvus
Usuários com User role
ao criar coleções no Milvus com pymilvus podem falhar ao usar os métodos ORM Connection
e MilvusClient Connection
.
Solução de problemas: Você deve seguir as instruções:
ORM Connection
: O usuário requer ambosDescribeCollection eCreateCollection privilégios concedidos noL3 página de política. Você deve selecionar todas as coleções em um banco de dados ao conceder DescribeCollection
privilégio
noL3 política por meio do console da web.
MilvusClient Connection
: Apenas CreateCollection
privilégio é necessário noL3 página de política. No entanto, a primeira tentativa de criar uma coleção falhará.
- Execute o
create_collection
funcionar uma vez. - Execute novamente o
create_collection
funcionar novamente. Isto permite que as políticas sejam sincronizadas e a criação da coleção seja bem-sucedida.
Caracteres especiais e maiúsculas e minúsculas impactando a sincronização de dados
Ao sincronizar dados entre buckets contendo tabelas ou esquemas com caracteres especiais ou letras maiúsculas mistas em seus nomes, você poderá encontrar os seguintes comportamentos inesperados:
- Tabelas ou esquemas com determinados caracteres especiais
%
,,
,{
,)
,(
,@
,$
,[
,:
terão seus dados totalmente ignorados durante a sincronização. - Tabelas ou esquemas com letras maiúsculas ou minúsculas serão convertidas em minúsculas antes da sincronização.
Solução alternativa: evite usar caracteres especiais e letras maiúsculas e minúsculas nos nomes de tabela e de esquema Renomeie as tabelas e esquemas existentes para usar apenas os caracteres suportados.
Validação de dados ausente para terminais de armazenamento do Amazon S3
Atualmente, a interface com o usuário (UI) não executa validação de dados para terminais associados ao tipo de armazenamento Amazon S3.
Uso de alias incorreto na cláusulas WITH
e USE catalog.schema
Cláusula WITH
: Ao referenciar dados dentro da cláusula WITH
, use o nome exato do alias designado durante sua definição O uso de um alias incorreto aciona a mensagem de erro a seguir:
Schema must be specified when session schema is not set
Uso de USE catalog.schema
juntamente com a cláusula WITH
: quando as tabelas são especificadas usando WITH
e USE catalog.schema
, consultas com nomes de alias incorretos resultarão no erro a
seguir.
Table does not exist
Interpretação literal de string emPresto (Java )
Presto (Java ), por padrão interpreta literais de string como VARCHAR, diferentemente de muitos outros sistemas de banco de dados que os tratam como CHAR.
EmPresto (Java ), as comparações de cadeias de caracteres são executadas nos caracteres reais presentes na cadeia de caracteres, excluindo espaços à direita. Isso pode fazer com que as consultas retornem resultados incorretos ao trabalhar com sequências que podem conter espaços à direita, pois esses espaços não são considerados durante a comparação.
Nomes de tabelas com vários pontos..
Presto (Java ) não oferece suporte à criação ou consulta de nomes de tabelas que contenham três ou mais pontos consecutivos em seu nome. As tentativas de referenciar essas tabelas em consultas podem resultar em erros
O usuário ainda está visível na página de controle de acesso de um mecanismo depois de remover o usuário do IAM
A autenticação LDAP não é suportada pelo conector Teradata.
O conector watsonx.data Teradata não suporta atualmente LDAP (Lightweight Directory Access Protocol) para autenticação do usuário.
Solução alternativa: se você encontrar o erro 502, recarregue a página da IU do histórico do Spark após esperar de 1 a 5 segundos. Isso deve permitir tempo suficiente para que o servidor se torne operacional
Anomalia na criação de esquemas de catálogos cruzados no Presto.
Existe uma anomalia na criação de esquemas para catálogos Hive e Iceberg gerenciados pelo Presto. Ao usar um Hive Metastore Service comum para vários catálogos (por exemplo, um catálogo Iceberg e um catálogo Hive, ou dois catálogos Iceberg ou Hive ), a criação de um esquema em um catálogo pode criá-lo em um catálogo errado. Isso ocorre se o local especificado durante a criação do esquema pertencer a um catálogo diferente do desejado.
Solução alternativa: Você deve sempre fornecer explicitamente o caminho de armazenamento correto associado ao catálogo de destino ao usar instruções CREATE SCHEMA
no Presto. Isso assegura que o esquema seja criado
no local desejado
Presto (Java ) consultas com muitas colunas e tamanho excedendo o limite padrão.
Presto (Java ) consultas envolvendo diversas tabelas com um grande número de colunas (por exemplo, 1.000 colunas por tabela ou mais) no SELECT
cláusula pode encontrar problemas de desempenho em todos os ambientes de implantação.
O otimizador iterativo atinge o tempo limite quando max_reorder_joins
é configurado como 5 ou superior (o tempo limite padrão é 3 minutos) e fornece o erro a seguir:
The optimizer exhausted the time limit of 180000 ms
Para consultas que excedem o padrão max-task-update-size
limite (16MB emPresto (Java )), você pode observar um TaskUpdate size exceeding this limit
erro (o valor específico do limite depende da consulta real).
Solução Alternativa:
-
É possível melhorar o desempenho da consulta desativando temporariamente a regra
reorder_joins
usando a seguinte propriedade da sessão:set session reorder_joins = false;
-
Aumente o
max-task-update-size
valor no config.properties arquivo se o problema envolver umTaskUpdate size exceeding the limit
erro e reiniciePresto (Java ).
Exemplo:
experimental.internal-communication.max-task-update-size=64MB
Limitação: Transações não suportadas em bancos de dados do Informix não registrados.
Em watsonx.data, ao tentar executar consultas com implicações transacionais em bancos de dados Informix não registrados, as consultas falharão. Isso ocorre porque bancos de dados Informix não registrados, por design, não suportam transações.
Limitação: Netezza Performance Server limitação da instrução INSERT.
O Netezza Performance Server atualmente não suporta inserir várias linhas diretamente em uma tabela usando a cláusula VALUES. Essa funcionalidade é limitada a inserções de uma única linha. Consulte o oficial do Netezza Performance Server documentação para obter detalhes sobre a instrução INSERT
O exemplo a seguir usando VALUES para várias linhas não é suportado:
INSERT INTO EMPLOYEE VALUES (3,'Roy',45,'IT','CityB'),(2,'Joe',45,'IT','CityC');
Solução alternativa: use uma subconsulta com SELECT e UNION ALL para construir um conjunto de resultados temporário e insira-o na tabela 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 não responde às consultas.
Milvus pode não responder às consultas ao tentar carregar coleções ou partições que excedam a capacidade de memória disponível. Isso ocorre porque todas as operações de pesquisa e consulta no Milvus são executadas na memória, exigindo que toda a coleção ou partição seja carregada antes da consulta.
Solução Alternativa:
-
Considere as limitações de memória de sua implantação Milvus e evite carregar coleções ou partições excessivamente grandes.
-
Se Milvus deixar de responder às consultas, use a API Milvus apropriada para descarregar ou liberar algumas coleções da memória. Um exemplo usando o Python SDK:
collection.release()
Problema: Contagem imprecisa de linhas após exclusões no Milvus.
A propriedade collection.num_entities
pode não refletir o número real de linhas em uma coleção Milvus após as operações de exclusão. Essa propriedade fornece uma estimativa e não pode considerar entidades excluídas.
Para obter uma contagem precisa de linhas, execute uma consulta count(*)
na coleta.. Isso fornece uma contagem precisa mesmo após exclusões.
Sintaxe Pymilvus:
collection = pymilvus.Collection(...)
collection.query(expr='', fields=['count(*)'])
Limitações: operações não suportadas do Db2.
watsonx.data atualmente não suporta a operação ALTER TABLE DROP COLUMN para tabelas organizadas por colunas do Db2.
Por padrão, as instâncias do Db2 criam tabelas no formato organizado por colunas.
watsonx.data não suporta a criação de tabelas organizadas por linhas no Db2.
Limitações: manipulando valores nulos em Elasticsearch.
O conector Elasticsearch requer definição explícita de mapeamentos de índice para campos para manipular valores nulos ao carregar dados.
Limitações: Carregando JSON aninhado com Elasticsearch.
O conector Elasticsearch requer que os usuários especifiquem explicitamente estruturas JSON aninhadas como matrizes do tipo ROW para carregamento e consulta adequados. Para processar tais estruturas, use a operação UNNEST.
Limitações: Os usuários podem criar 3 instâncias do serviço Milvus para uma única instância de watsonx.data no IBM Cloud.
Problema: Não é possível criar visualizações no Presto.
Presto descreve uma visualização em um banco de dados mapeado como uma TABLE em vez de uma VIEW. Isso é evidente para o programa JDBC que se conecta ao mecanismo Presto.
Problema: o usuário não é removido do controle de acesso do catálogo ao revogar o acesso a dados..
Quando você concede acesso de usuário a um usuário, incluindo-o nas políticas de controle de dados usando a tela Controle de Acesso, o usuário é listado com sucesso no catálogo. Ao revogar o acesso de usuário a partir da página Controle de acesso, o usuário permanece listado no catálogo e continua a ter acesso de usuário.
Problema: não é possível visualizar os catálogos esperados dePresto (Java ).
Os usuários com privilégios de administrador não conseguem visualizar o esperadoHive ePostgreSQL catálogos dePresto (Java ).
Problema: a UI do Console lista usuários inválidos.
watsonx.data do utilizador (user1 ) convida um novo usuário (user2 ) para a conta usando o Gerenciar acessos e usuários tela (Gerenciar > Acesso (IAM) > Gerenciar acessos e usuários ) e concede acesso a uma função (MetastoreAccess, Visualizador, Operador, Editor, Administrador). User2 obtém acesso aos recursos na instância watsonx.data por meio da conta do user1. Além disso, o user2 recebe acesso a dados no nível do recurso, incluindo nas políticas de controle de dados usando a tela Controle de acesso Quando user1 remove user2 da conta do user1, user2 ainda está listado na guia Controle de Acesso no nível de recurso.
Problema: Não é possível visualizar o esquema criado
Quando um usuário com a função de Usuário e o acesso Criar (o usuário tem apenas o acesso Criar) é incluído em um banco de dados externo, ele não pode ver os esquemas que criou. Embora o usuário possa criar esquemas, ele não pode visualizá-los, A seguir está a resposta do sistema:
presto:default> show schemas;
Schema
--------
(0 rows)
Solução alternativa: forneça o privilégio de seleção para o esquema criado pelo usuário.
Problema: Acesso negado ao consultar um banco de dados externo.
Quando um usuário com a função Usuário e o acesso Criar (o usuário tem apenas acesso Criar) é incluído em um banco de dados externo, ele não pode executar a consulta de seleção a partir da tabela que ele criou. Embora o usuário possa se conectar
aoPresto (Java ) e criarem tabelas e esquemas, eles não poderão consultar a partir da tabela. O sistema exibe uma mensagem Access Denied
..
Query 20230608_132213_00042_wpmk2 failed: Access Denied: Cannot select from columns [id] in table or view tab_appiduser_01
Solução alternativa: forneça o privilégio de seleção para a tabela criada pelo usuário.
Problema: Esquema criado sob catálogo diferente.
Os esquemas estão disponíveis nos catálogos Iceberg e Hive. Quando um esquema é criado no catálogo do Iceberg, ele é listado no catálogo do Hive e vice-versa.
Emitir:Presto (Java ) não oferece suporte à exclusão de tabelas Iceberg.
Problema: DROP SCHEMA no Db2.
No Db2, o esquema poderá ser descartado apenas se estiver vazio. Iniciar a instrução DROP SCHEMA
com relação a um esquema não vazio pode resultar em Db2 SQL Error SQLCODE=-478
e SQLSTATE=42893
.
Problema: instrução CREATE VIEW que é parcialmente suportada pelo Db2.
O conector Db2 suporta parcialmente a instrução CREATE VIEW
. OPresto (Java ) a sintaxe SQL suportada não inclui a criação de visualizações com nomes de colunas personalizados (diferentes dos nomes das colunas da tabela).
Problema: instrução CREATE VIEW que é parcialmente suportada pelo NPSaaS.
O conector NPSaaS suporta parcialmente a instrução CREATE VIEW
. OPresto (Java ) A sintaxe SQL suportada não inclui a criação de visualizações com nomes de colunas personalizados (diferentes dos nomes das colunas da tabela).
Emitir:Presto (Java ) não reconhece o caminho como um diretório.
Quando você cria uma nova tabela com umPresto (Java )Hive conector que usa umS3 pasta de um local externo,Presto (Java ) não reconhece o caminho como um diretório e pode ocorrer um erro.
Por exemplo, ao criar uma tabela de cliente no diretório de destino DBCERT/tbint
em um depósito chamado dqmdbcertpq
usando o console IBM Cloud UX e Aspera S3, o erro a seguir é encontrado: 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
Objetos em um sistema de arquivos são armazenados como objetos e seu caminho. O objeto e o caminho devem ter metadados associados. Se o caminho não estiver associado aos metadados,Presto (Java ) não reconhece o objeto e responde que o caminho não é um diretório.
Problema: Designando privilégio de concessão ou de revogação.
Designar o privilégio Conceder ou Revogar a um usuário por meio da política de acesso não funciona conforme esperado nos cenários a seguir:
-
User_A inclui um depósito e um catálogo Hive (por exemplo,
useracat02
). -
O User_A cria um esquema e uma tabela.
-
User_B e User_C são funções de Usuário designadas ao catálogo.
-
User_A inclui política de concessão de permissão para User_B.
-
User_B se conecta ao catálogo e executa
grant select
para User_C.presto:default> grant select on useracat02.schema_test_01.tab_1 to "6ff74bf7-b71b-42f2-88d9-a98fdbaed304";
-
Quando o User_C conecta ao catálogo e executa o comando
select
na tabela, o comando falha com a mensagem de acesso negado.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: Criando esquema sem um local.
Quando você cria um esquema sem um local, ele não é listado na lista de esquemas de qualquer catálogo Por exemplo, se você criar um esquema sem especificar o local do depósito, o esquema será criado no HMS e não no depósito.. Quando você tenta criar um novo esquema com o mesmo nome, ele falha e responde que o esquema já existe.
Solução alternativa: especifique o local do depósito ao criar um esquema.
Problema: nomes exclusivos para esquema e depósito.
Um esquema e um depósito não podem ser criados com o mesmo nome Por exemplo, se você criar um esquema denominado "vendas" em um catálogo, o mesmo nome não poderá ser usado para outro esquema em outro catálogo. Da mesma forma, se você registrar um depósito com o nome "salesbucket", um outro depósito com o mesmo não poderá ser registrado, mesmo se o depósito estiver localizado em um armazenamento de objeto diferente.
Solução Alternativa: Use nomes exclusivos ao criar esquemas e depósitos
Problema: Criando esquema para tabela de destino.
Você deve criar esquema para a tabela de destino se o esquema não existir.
Problema: a ingestão falhará se o arquivo CSV contiver registro inválido.
A ferramenta ibm-lh não suporta ignorar o máximo de registros inválidos para arquivos CSV se o campo de incompatibilidade for maior que a definição de tabela.
Problema: Criando local do esquema com caminho.
Use uma das seguintes opções de local ao criar um esquema:
- Local que aponta para um depósito / subcaminho sem um
/
final - Local apontando para um depósito / subcaminho com um
/
final-Recomendado para uma melhor estruturação
Embora seja possível usar um local apontando para um depósito apenas com ou sem um /
final, ele pode levar à falha. Portanto, é recomendado usar um subcaminho.
Emitir:Presto (Java ) não suporta AS OF
com mesas de iceberg.
Presto (Java ) não suporta AS OF <time stamp>
comando em uma consulta SELECT.
solução alternativa: Chamar CALL iceberg_data_rollback_to_snapshot
para mover para o registro de data e hora necessário.
Se você usar CALL iceberg_data_rollback_to_snapshot
com um registro de data e hora, não será possível chamar o procedimento armazenado para mover para um registro de data e hora posterior. Use Spark SQL como uma alternativa.
Problema: apenas o criador tem acesso DROP na tabela no Apache Hive (API).
Somente o criador de uma tabela pode eliminar a tabela que é criada no catálogo Apache Hive. Outros usuários não podem descartar a tabela mesmo se tiverem um acesso DROP explícito à tabela. Eles obtêm a mensagem Access Denied
Problema: certificados fornecidos pelo usuário não são suportados pelo watsonx.data.
Atualmente, os certificados fornecidos pelo usuário não são suportados no watsonx.data ao incluir conexões com o banco de dados, depósitos de armazenamento de objeto ou ao usar o utilitário ibm-lh.
Problema: Nenhuma coluna para analisar a partir do erro do arquivo.
Ao tentar alimentar a pasta do AWS S3 usando a ferramenta ibm-lh, o erro a seguir poderá ser encontrado se não houver arquivos vazios na pasta:
No columns to parse from file
Solução alternativa: primeiro, liste as pastas dentro do depósito usando o comando aws s3 ls
Se nenhum arquivo vazio for listado, copie todos os arquivos para outra pasta usando o comando aws s3 cp
Caracteres especiais em nomes de tabela de destino podem causar falhas de ingestão
A ingestão falhará se um nome de tabela de destino contiver caracteres especiais ao alimentar por meio do console da web.
Solução alternativa: é possível ingerir dados usando a ingestão por meio da CLI do Spark
Limitação:Presto (Java ) não suporta VARBINARY
tipo de dados.
A versão atual doPresto (Java ) não oferece suporte a strings binárias com comprimento. A execução de uma instrução ALTER TABLE
em um banco de dados resulta no erro a seguir:
Unknown type 'varbinary(n)' for column 'testcolumn'
Essa é uma limitação no Preso e não uma limitação no watsonx.data..
Limitações: Faça backup de seus dados para evitar a perda de dados ao trabalhar com o ambiente de desenvolvimento do VS Code - Spark Labs.
Como os laboratórios do Spark são efêmeros por natureza, é necessário fazer backup dos dados armazenados periodicamente para evitar a possível perda de dados durante atualizações ou uma falha do Spark Master.