Problemi noti (limitazioni)
Le seguenti limitazioni e problemi noti si applicano a IBM® watsonx.data.
Limitazione della configurazione della rete privata virtuale
Gli endpoint privati non sono supportati per i motori esterni come IBM Db2 Warehouse, IBM Netezza e IBM Analytics Engine (Spark).
HDFS l'aggiunta di un secchio non è supportata tramite CPDCTL
L'aggiunta dei bucket HDFS non è attualmente supportata dal plugin cpdctl wx-data.
IBM watsonx.data Presto il connettore in Software Hub 5.1.1 e successivi non può connettersi all'istanza cloud di IBM watsonx.data
IBM watsonx.data Presto il connettore non riesce a connettersi all'istanza IBM watsonx.data a causa di un errore 520 di Cloudflare. Questo problema si verifica quando vengono effettuate più chiamate simultanee all'API GET /engines
,
soprattutto quando l'istanza watsonx.data ha un numero elevato di criteri.
La modifica delle credenziali dell'home bucket del motore Spark può interrompere i dati e le operazioni
L'aggiornamento delle credenziali di accesso per un bucket di archiviazione che è stato designato come home bucket del motore Spark durante il processo di provisioning può causare problemi di accesso ai dati e guasti operativi.
Gli amministratori del metastore e i visualizzatori del metastore non sono in grado di visualizzare i dettagli dello schema e delle tabelle
Un utente con i privilegi di amministratore del metastore e di visualizzatore del metastore nell'area di lavoro Query e in Data manager non può visualizzare i dettagli dello schema e delle tabelle, a meno che non sia stato definito un criterio di visualizzazione per gli schemi e le tabelle.
Gli scenari di evoluzione dello schema falliscono in Presto (C++)
Quando si eliminano e/o aggiungono colonne della tabella, le query potrebbero fallire. Ad esempio, si veda la sequenza di istruzioni riportata di seguito, dopo la quale le query sulla tabella falliscono.
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)
Soluzione: Per PARQUET
, eseguire il seguente comando in sessione:
set session <catalog-name>.parquet_use_column_names=true;
Sostituire <catalog-name>
con il catalogo effettivo utilizzato.
Oppure impostare hive.parquet.use-column-names=true
nelle proprietà del catalogo. Per ORC
, impostare hive.orc.use-column-names=true
nelle proprietà del catalogo.
Connection Information
la pagina mostra un nome utente troncato
La pagina Connection Information
mostra un nome utente troncato, escludendo il prefisso ibmlhapikey_
per PowerBI
e Looker
.
Soluzione: Aggiungere il prefisso ibmlhapikey_
al nome utente quando si copia manualmente il valore per abilitare le connessioni con gli strumenti di BI.
Problema con il carattere turco maiuscolo İ nel database Oracle che utilizza il set di caratteri WE8ISO8859P9 ( ORA-00911 Error)
In un database Oracle che utilizza il set di caratteri WE8ISO8859P9, il carattere turco maiuscolo İ non è supportato nella modalità OFF (predefinita) del flag delle caratteristiche miste, causando errori di carattere non valido in ORA-00911:.
Soluzione: Impostare il flag della funzione mixed-case su ON.
La visualizzazione predefinita dell' information_schema
e di un catalogo elenca schemi e tabelle di altri cataloghi
Se un utente ha più di un catalogo, la visualizzazione predefinita dell' information_schema
e mostrerà anche gli schemi e le tabelle di altri cataloghi, indipendentemente dai cataloghi associati al motore.
Hive i nomi delle colonne esterne con lettere maiuscole a larghezza intera non possono essere riconosciuti quando file-column-names-read-as-lower-case è impostato su true
Quando il valore presto worker catalog property file-column-names-read-as-lower-case è impostato su true, converte i nomi dei campi in lettere maiuscole ASCII in lettere minuscole ASCII. Di conseguenza, i dati sotto i nomi delle colonne con caratteri maiuscoli a larghezza intera non verranno riconosciuti e appariranno come "nulli".
Aggiornamento certificato necessario per l'acquisizione dei dati
Se si riscontrano problemi con le connessioni Data Source in Ingestion discovery, rivedere i dettagli del certificato, poiché il messaggio di errore attuale non è chiaro. Un certificato mancante/scaduto è probabilmente la causa del problema.
Soluzione alternativa: per eseguire l'ingestione è necessario mantenere aggiornati i certificati di sicurezza.
Errore di accensione dovuto alla scadenza della firma ADLS durante l'operazione di scrittura/cancellazione/aggiornamento
Il processo Spark fallisce con il seguente errore quando esegue un'operazione di scrittura/cancellazione/aggiornamento in un archivio ADLS- Gen1. Ciò accade perché la firma ADLS scade a metà del processo.
java.io.IOException: Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature
Soluzione alternativa: impostare un valore elevato per la scadenza della firma ADLS. Configurare la proprietà, spark.hadoop.spark.hadoop.wxd.cas.sas.expiry.period
per controllare il tempo di scadenza della firma
ADLS. Aggiorna il valore predefinito da 300s a 43200s.
Presto Limitazione della dimensione della password CLI
Presto CLI supporta una dimensione massima della password di 1 KB (1024 byte). Se la password supera queste dimensioni, il sistema non può accettarla nel campo password; deve invece essere esportata.
Il tipo di dati timestamptz non è supportato per una tabella ORC durante l'aggiornamento della console web watsonx.data
I nomi dei database contenenti trattini o spazi non possono essere interrogati dal motore Spark in un notebook di Python, anche quando è stata aggiunta l'estensione appropriata per il controllo degli accessi di Spark.
I termini commerciali rimangono dopo che l'integrazione del livello di automazione semantica è stata eliminata da IBM watsonx.data
I termini commerciali importati in IBM Knowledge Catalog per l'integrazione di un livello di automazione semantica (SAL) in watsonx.data non vengono rimossi quando l'integrazione viene eliminata. Ciò può comportare la duplicazione dei termini commerciali se viene successivamente abilitata una nuova integrazione SAL e vengono nuovamente caricati termini commerciali uguali o simili.
Soluzione alternativa: per evitare termini aziendali duplicati, l'amministratore del cluster o l'utente che ha creato originariamente la registrazione SAL deve eliminare manualmente tutti i termini aziendali importati per l'integrazione SAL.
La clausola EXISTS sulle tabelle di tipo " Apache Phoenix " genera un'eccezione durante l'esecuzione dell'errore di query
Le query che coinvolgono la clausola EXISTS su tabelle Apache Phoenix potrebbero non riuscire inaspettatamente, anche quando la colonna referenziata è valida. Ciò si verifica a causa delle limitazioni nell'interpretazione della clausola EXISTS da parte di Apache Phoenix, in particolare nei casi con strutture di query ambigue o disallineate.
Soluzione alternativa: per ovviare a questo limite, applicare una delle seguenti strategie:
-
Stabilire una relazione chiara tra la sottoquery e la query principale. Introdurre una condizione di filtro all'interno della sottoquery per creare una relazione significativa tra la sottoquery e la query principale. Ad esempio, dove department_id_bigint NON È NULL nella sottoquery. Per maggiori informazioni, fare riferimento al seguente esempio:
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 )
-
Stabilire una relazione chiara tra le tabelle coinvolte unendo esplicitamente le tabelle nella sottoquery. Ciò garantisce che la sottoquery sia contestualmente rilevante e risolva il problema di esecuzione. Ad esempio, dove t3.department_id_bigint = t2.department_id_bigint nella sottoquery. Per maggiori informazioni, fare riferimento al seguente esempio:
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 )
Il catalogo di Hive non supporta il formato CSV per la creazione di tabelle con colonne di tipo int
Il catalogo Hive non supporta il formato CSV per la creazione di colonne di tipo int. Viene visualizzato il seguente errore:
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
Soluzione: Utilizzare le seguenti opzioni per il catalogo Hive:
- Creare una tabella in varchar.
- Creare una vista che restituisca le colonne ai loro tipi di dati originali.
Comportamento incoerente nell'ingestione di file CSV e Parquet
Nonostante le specifiche di progetto indichino che i file CSV devono essere ingeriti solo in tabelle create da file CSV e che i file di parquet devono essere ingeriti solo in tabelle create da file di parquet, c'è una discrepanza nel comportamento effettivo in cui gli utenti sono in grado di ingerire file CSV in tabelle di parquet. Questo può portare a risultati imprevisti, problemi di qualità dei dati o di prestazioni se lo schema o la formattazione del file CSV o parquet non sono in linea con la struttura prevista della tabella di destinazione.
Associazioni di file non valide nel gruppo di risorse Presto attraverso l'interfaccia utente e problemi di riavvio del motore
Quando viene associato un file non valido per un motore nel gruppo di risorse Presto tramite l'interfaccia utente watsonx.data, il motore viene riavviato. Tuttavia, l'interfaccia utente potrebbe visualizzare erroneamente che il motore sta utilizzando il nuovo file assegnato.
Risoluzione: Se il nuovo file non è associato all'ambiente watsonx.data, contattare il supporto IBM per ulteriore assistenza.
Supporto del tipo di dati Time in Hive e Iceberg
Hive: Il catalogo Hive non supporta nativamente il tipo di dati time.
Iceberg: Iceberg supporta il tipo di dati time.
Soluzione alternativa: per consentire la corretta gestione dei dati temporali nelle tabelle Iceberg, la proprietà " hive.parquet-batch-read-optimization-enabled
" deve essere impostata su " false
".
I file con schemi diversi danno luogo a valori nulli
watsonx.data ora supporta l'ingestione di tipi di file supportati con schemi diversi. Tuttavia, quando le colonne all'interno di questi file hanno schemi distinti, i valori di queste colonne vengono impostati su null.
Caratteri speciali non supportati nella creazione di schemi e tabelle
I seguenti caratteri speciali non sono supportati durante la creazione di schemi e tabelle:
Schemi ( Hive e Iceberg): $
, ^
, +
, ?
, *
, {
, [
, (
, )
e /
.
Tabelle ( Hive ): $
, ^
, +
, ?
, *
, {
, [
, (
, )
e /
. (La creazione di tabelle all'interno di uno schema il cui nome
inizia con il carattere speciale " @
" genererà un errore).
Tabelle (Iceberg):$
, ^
, +
, ?
, *
, {
, [
, (
, )
, /
, e @
.
Si raccomanda di non utilizzare caratteri speciali come punto interrogativo (?), trattino (-), asterisco (*) o caratteri delimitatori come \r, \n, e \t nei nomi di tabelle, colonne e schemi. Sebbene questi caratteri speciali siano supportati e sia possibile creare tabelle, colonne e schemi, il loro utilizzo potrebbe causare problemi durante l'esecuzione del comando INSERT o l'applicazione delle politiche di accesso per lo stesso.
Per garantire un'esperienza senza interruzioni, si prega di seguire l'elenco riportato di seguito:
- I nomi degli schemi possono contenere lettere, numeri o uno dei seguenti termini:
!
,#
,&
,]
,}
,<
,>
,=
,%
e@
. - I nomi delle tabelle possono contenere lettere, numeri o uno dei seguenti caratteri:
!
,#
,&
,]
,}
,<
,>
,=
e;
. - Le colonne possono contenere lettere, numeri uno di
!
,#
,&
,[
,]
,<
>
,_
,:
e@
.
L'operazione ALTER TABLE
fallisce nell'invio di un lavoro Spark
I lavori Spark che creano uno schema, una tabella e poi tentano un'operazione ALTER TABLE
possono incontrare un authz.AccessControlException
a causa di autorizzazioni insufficienti.
Questo accade perché, anche se la creazione dello schema e della tabella è avvenuta con successo, il lavoro cerca di eseguire l'operazione ALTER TABLE
prima che i dati del metastore vengano aggiornati con i dettagli dello schema
e della tabella appena creati.
Risoluzione: Per evitare errori di accesso negato, è necessario prevedere un ritardo tra ogni operazione che comporta la creazione di nuovi schemi o tabelle all'interno dello stesso script Python.
Soluzione: È possibile disattivare il DAS o assicurarsi che i bucket o l'object storage siano configurati con endpoint HTTPS.
Il tentativo di leggere le tabelle Parquet v2 attraverso Presto (C++) provoca un errore
Quando si tenta di leggere le tabelle Parquet v2 attraverso Presto (C++) create tramite Data manager in watsonx.data, viene visualizzato il seguente errore:
Error in ZlibDecompressionStream::Next
**Lavoro: ** Presto (C++) attualmente non supporta la lettura delle tabelle Parquet v2. È necessario copiare i dati in una nuova tabella in formato v1 per renderli compatibili con la lettura con Presto (C++).
-
Impostare la proprietà della sessione su PARQUET_1_0:
set session <catalog_name>.parquet_writer_version = 'PARQUET_1_0';
-
Eseguire il seguente comando per copiare i dati in una nuova tabella:
create table <catalog name>.<schema name>.<table name> as (select * from <originaltablename>;
Attualmente l'ingestione di Spark non supporta caratteri speciali come le virgolette, i segni di spunta e le parentesi per i nomi delle colonne delle tabelle partizionate.
Il tentativo di interrogare le tabelle relative a Query History and Monitoring Management (QHMM) utilizzando i motori Presto (C++) potrebbe generare degli errori
Quando si tenta di interrogare le tabelle relative a QHMM utilizzando i motori Presto (C++), è possibile che si verifichino errori dovuti a formati di file non supportati. Presto (C++) supporta solo i formati Parquet v1. Non è possibile utilizzare Presto (C++) per interrogare dati o tabelle in altri formati.
**Risoluzione: ** Si può passare a usare i motori Presto (Java) per interrogare le tabelle relative a QHMM.
Errore di raggiungimento del limite di concorrenza del server nel server di volo
È possibile che si verifichi un errore Server concurrency limit reached quando si utilizza il server di volo per eseguire le query. Questo si verifica quando il server utilizza molta memoria a causa di un gran numero di richieste contemporanee.
Soluzione: Aumentare il numero di flight pod o ristrutturare per semplificare le query e ridurre il numero di sotto-query. Regolare il numero di repliche in base al carico del sistema e alle risorse disponibili.
Usare il seguente comando per scalare il numero di pod per la distribuzione wdp-connect-flight
:
oc scale deployment wdp-connect-flight --replicas=<number of replicas>
Ad esempio, se è necessario scalare il numero di pod a 36, eseguire il seguente comando:
oc scale deployment wdp-connect-flight --replicas=36
Riconoscimento errato delle date gregoriane in Presto con Hive tabelle Parquet
Presto presenta problemi nell'elaborazione di date storiche precedenti a 0200-01-01
, in particolare quando sono memorizzate in tabelle Hive formattate come Parquet. Questo problema si verifica a causa della conversione tra il calendario
gregoriano e quello giuliano, implementata in 1582-10-15
. Le date precedenti a questa data limite vengono interpretate erroneamente da Presto.
Informazioni incomplete sulla lunghezza delle colonne nell'output di SHOW COLUMNS
La query SHOW COLUMNS
in Presto attualmente fornisce informazioni sulle colonne, tra cui nome, tipo di dati, dettagli aggiuntivi (extra) e commenti. Questo problema evidenzia che la funzionalità esistente manca di dettagli sulla
lunghezza dei tipi di dati basati sui caratteri (CHAR e VARCHAR). Mentre alcuni connettori restituiscono la lunghezza effettiva definita durante la creazione della tabella, altri possono fornire un valore predefinito o nessuna informazione.
Per ovviare a questa limitazione, sono state aggiunte tre nuove colonne all'output SHOW COLUMNS
:
-
Scala: Applicabile al tipo di dati DECIMALE, indica il numero di cifre dopo la virgola.
-
Precisione: Applicabile ai tipi di dati numerici, specifica il numero totale di cifre. (predefinito: 10)
-
Lunghezza: Inteso per i tipi di dati CHAR e VARCHAR, rappresenta il numero massimo di caratteri consentito.
Limitazioni attuali:
-
La lunghezza riportata nella colonna
Length
potrebbe non rispecchiare sempre la dimensione effettiva definita nello schema della tabella a causa delle limitazioni del connettore. -
I connettori che non forniscono informazioni sulla lunghezza visualizzeranno un valore predefinito o nullo, a seconda del connettore.
Errore di calcolo per OPT_SORTHEAP in Query Optimizer
A causa di un errore di calcolo nelle impostazioni di configurazione di Query Optimizer per il valore di OPT_SORTHEAP
, le prestazioni di Query Optimizer potrebbero essere compromesse.
Risoluzione: Per risolvere l'errore di calcolo per OPT_SORTHEAP
in Query Optimizer, completare i passaggi seguenti per aggiornare la configurazione da OPT_SORTHEAP= <initial_value>
a OPT_SORTHEAP <initial_value>/20
.
- Impostare la variabile d'ambiente
PROJECT_CPD_INSTANCE
che punta allo spazio dei nomi in cui è installato watsonx.data.
export PROJECT_CPD_INSTANCE=<wxd_namespace
- Modificare il valore di
OPT_SORTHEAP
inOPT_SORTHEAP <initial_value>/20
eseguendo il seguente comando.
oc edit db2uinstance lakehouse-oaas -n $PROJECT_CPD_INSTANCE
- Attendete che
STATE
cambi inReady
perlakehouse-oaas
ed eseguite il seguente comando.
watch "oc get db2uinstance -n $PROJECT_CPD_INSTANCE"
Limitazioni -Presto (C++)
- Presto Il motore (C++) attualmente non supporta i cataloghi di database.
- Parquet è l'unico formato di file supportato.
- Hive il connettore è supportato.
- La tabella Iceberg predefinita supporta solo la lettura del formato Parquet v1.
- Sono supportate le query TPC-H/TPC-DS.
DELETE FROM
ECALL SQL
le dichiarazioni non sono supportate.START
,COMMIT
, EROLLBACK
le transazioni non sono supportate.- Tipi di dati
CHAR
,TIME
, ETIME WITH TIMEZONE
non sono supportati. Questi tipi di dati sono inclusi daVARCHAR
,TIMESTAMP
, ETIMESTAMP WITH TIMEZONE
.IPADDRESS
,IPPREFIX
,UUID
,kHYPERLOGLOG
,P4HYPERLOGLOG
,QDIGEST
, ETDIGEST
non sono supportati.VARCHAR
supporta solo una lunghezza limitata.Varchar(n)
con un limite di lunghezza massima non è supportato.TIME
ETIME WITH TIMEZONE
è supportato nello sviluppo della comunità.TIMESTAMP
le colonne nei file Parquet non possono essere lette.
- Funzioni scalari:
IPFunctions
,QDigest
,HyperLogLog
e l'internazionalizzazione geospaziale non sono supportate.
- Funzioni aggregate:
QDigest
, le metriche di classificazione e l'entropia differenziale non sono supportate.
- S3 ES3 sono supportati file system compatibili (sia in lettura che in scrittura).
Presto (C++) non riesce a eseguire query su una tabella partizionata esterna
Quando esegui una query su una tabella esterna con CHAR
colonne del tipo di dati, la query non viene eseguita. Questo problema si verifica a causa della limitazione chePresto (C++) non supporta CHAR
tipi di dati.
**Risoluzione: ** Cambiare la colonna del tipo di dati CHAR
in VARCHAR
.
Accesso alle tabelle Hive e Iceberg nello stesso catalogo di metastore glue
Quando si utilizza ilAWS Glue Data Catalog per gestire un bucket o una posizione di archiviazione contenente sia Iceberg cheHive tabelle, tentando di accedere alle tabelle Iceberg daHive il catalogo dà,Not a Hive table
errore e
tentativo di accessoHive i tavoli del catalogo Iceberg danno,Not an Iceberg table
errore.
Utilizzo dell'ID come nome di colonna inCassandraCREATE TABLE
InCassandra, non è possibile creare una tabella con una colonna denominata ID
durante l'utilizzo di aCassandra connettore attraversoPresto. Questo è perché ID
è una parola chiave riservata per ilCassandra driver utilizzato
daPresto, che genera automaticamente un UUID per ogni riga. Il tentativo di creare una tabella con un ID nome colonna genera un messaggio di errore che indica una dichiarazione di colonna duplicata come segue: Colonna duplicata id
dichiarazione per tabella tm_lakehouse_engine_ks.testtable12
**Risoluzione: ** Evitare di usare ID
come nome di colonna quando si creano tabelle Cassandra attraverso Presto.
Il ruolo utente con il criterio CreateCollection
L3 non riesce a creare una raccolta in Milvus
Gli utenti con User role
durante la creazione di collezioni in Milvus con pymilvus possono fallire quando si usano i metodi ORM Connection
e MilvusClient Connection
.
**Risoluzione: ** È necessario seguire le istruzioni:
ORM Connection
: L'utente li richiede entrambiDescribeCollection ECreateCollection privilegi concessi nelL3 pagina delle politiche. È necessario selezionare tutte le raccolte in un database durante la concessione DescribeCollection
privilegio nelL3 policy tramite console web.
MilvusClient Connection
: Soltanto CreateCollection
il privilegio è necessario nelL3 pagina delle politiche. Tuttavia, il primo tentativo di creare una raccolta fallirà.
- Corri il
create_collection
funzionare una volta. - Rieseguire il
create_collection
funzionare di nuovo. Ciò consente la sincronizzazione delle policy e la creazione della raccolta avrà esito positivo.
Caratteri speciali e maiuscole e minuscole incidono sulla sincronizzazione dei dati
Durante la sincronizzazione dei dati tra bucket contenenti tabelle o schemi con caratteri speciali o lettere maiuscole e minuscole nei nomi, potresti riscontrare i seguenti comportamenti imprevisti:
- Tabelle o schemi con determinati caratteri speciali
%
,,
,{
,)
,(
,@
,$
,[
,:
i loro dati verranno completamente saltati durante la sincronizzazione. - Le tabelle o gli schemi con lettere miste o maiuscole verranno convertiti in minuscole prima della sincronizzazione.
Soluzione temporanea: evitare di utilizzare caratteri speciali e maiuscole / minuscole nei nomi di tabella e schema. Ridenominare le tabelle e gli schemi esistenti per utilizzare solo i caratteri supportati.
Convalida dei dati mancante per gli endpoint di storage Amazon S3
Attualmente, l'interfaccia utente (UI) non esegue la convalida dei dati per endpoint associati al tipo di memoria Amazon S3.
Utilizzo alias non valido nella clausola WITH
e in USE catalog.schema
.
Clausola WITH
: quando si fa riferimento ai dati all'interno della clausola WITH
, utilizzare il nome alias esatto assegnato durante la definizione. L'uso di un alias non corretto attiva il messaggio di errore riportato
di seguito.
Schema must be specified when session schema is not set
Clausola USE catalog.schema
usage with WITH
: quando le tabelle vengono specificate utilizzando WITH
e USE catalog.schema
, le query con nomi alias non corretti genereranno il seguente errore.
Table does not exist
Interpretazione letterale delle stringhe inPresto (Java )
Presto (Java ), per impostazione predefinita interpreta i valori letterali stringa come VARCHAR, a differenza di molti altri sistemi di database che li trattano come CHAR.
InPresto (Java ), i confronti tra stringhe vengono eseguiti sui caratteri effettivi presenti nella stringa, esclusi gli spazi finali. Ciò può far sì che le query restituiscano risultati non corretti quando si utilizzano stringhe che possono contenere spazi finali, poiché questi spazi non vengono considerati durante il confronto.
Nomi tabella con più punti
Presto (Java ) non supporta la creazione o l'esecuzione di query su nomi di tabelle che contengono tre o più punti consecutivi nel nome. I tentativi di fare riferimento a tali tabelle nelle interrogazioni possono causare errori.
L'utente è ancora visibile nella pagina di controllo dell'accesso di un motore dopo aver rimosso l'utente da IAM.
L'autenticazione LDAP non è supportata per il connettore Teradata.
il connettore watsonx.data Teradata non supporta attualmente LDAP (Lightweight Directory Access Protocol) per l'autenticazione utente.
Soluzione temporanea: se si verifica l'errore 502, ricaricare la pagina della UI della cronologia Spark dopo aver atteso 1-5 secondi. Ciò dovrebbe consentire un tempo sufficiente per rendere operativo il server.
Anomalia nella creazione di schemi di catalogo incrociati in Presto.
Esiste un'anomalia nella creazione di schemi per i cataloghi Hive e Iceberg gestiti da Presto. Quando si utilizza un servizio metastore Hive comune per più cataloghi (ad esempio, un catalogo Iceberg e un catalogo Hive, oppure due cataloghi Iceberg o Hive ), la creazione di uno schema in un catalogo potrebbe crearlo in un catalogo sbagliato. Ciò si verifica se l'ubicazione specificata durante la creazione dello schema appartiene ad un catalogo diverso da quello previsto.
Soluzione: È necessario fornire sempre esplicitamente il percorso di archiviazione corretto associato al catalogo di destinazione quando si utilizzano le istruzioni CREATE SCHEMA
in Presto. Ciò garantisce che lo
schema venga creato nell'ubicazione desiderata.
Presto (Java ) query con molte colonne e dimensioni che superano il limite predefinito.
Presto (Java ) query che coinvolgono più tabelle con un numero elevato di colonne (ad esempio, 1000 colonne per tabella o più) nella SELECT
La clausola potrebbe riscontrare problemi di prestazioni in tutti gli ambienti di distribuzione.
L'ottimizzazione iterativa va in timeout quando max_reorder_joins
è impostato su 5 o su un valore superiore (il timeout predefinito è 3 minuti) e restituisce il seguente errore:
The optimizer exhausted the time limit of 180000 ms
Per query che superano il valore predefinito max-task-update-size
limite (16MB InPresto (Java )), potresti osservare a TaskUpdate size exceeding this limit
errore (il valore specifico del limite dipende dalla query
effettiva).
Soluzione:
-
È possibile migliorare le prestazioni della query disabilitando temporaneamente la regola
reorder_joins
utilizzando la seguente proprietà di sessione:set session reorder_joins = false;
-
Aumentare il
max-task-update-size
valore nel config.properties file se il problema riguarda aTaskUpdate size exceeding the limit
errore e riavviarePresto (Java ).
Esempio:
experimental.internal-communication.max-task-update-size=64MB
Limitazione: transazioni non supportate nei database Informix non registrati.
In watsonx.data, quando si tenta di eseguire query con implicazioni transazionali su database Informix non registrati, le query avranno esito negativo. Ciò si verifica perché i database Informix non registrati, per impostazione, non supportano le transazioni.
Limitazione: Netezza Performance Server limitazione dell'istruzione INSERT.
Netezza Performance Server attualmente non supporta l'inserimento di più righe direttamente in una tabella utilizzando la clausola VALUES. Questa funzionalità è limitata agli inserimenti a riga singola. Fare riferimento al Netezza Performance Server documentazione ufficiale per i dettagli sull'istruzione INSERT.
Il seguente esempio che utilizza VALUES per più righe non è supportato:
INSERT INTO EMPLOYEE VALUES (3,'Roy',45,'IT','CityB'),(2,'Joe',45,'IT','CityC');
Soluzione temporanea: utilizzare una query secondaria con SELECT e UNION ALL per costruire una serie di risultati temporanea e inserirla nella tabella di destinazione.
INSERT INTO EMPLOYEE SELECT * FROM(SELECT 4,'Steve',35,'FIN','CityC' UNION ALL SELECT 5,'Paul',37,'OP','CityA') As temp;
Problema: Milvus non risponde alle richieste.
Milvus potrebbe non rispondere alle query quando si cerca di caricare collezioni o partizioni che superano la capacità di memoria disponibile. Questo accade perché tutte le operazioni di ricerca e di interrogazione in Milvus vengono eseguite in memoria, richiedendo il caricamento dell'intera collezione o partizione prima dell'interrogazione.
Soluzione:
-
Considerate i limiti di memoria della vostra installazione di Milvus ed evitate di caricare collezioni o partizioni troppo grandi.
-
Se Milvus non risponde alle interrogazioni, utilizzare l'API Milvus appropriata per scaricare o rilasciare alcune collezioni dalla memoria. Un esempio che utilizza l'SDK Python:
collection.release()
Problema: Conteggio impreciso delle righe dopo le cancellazioni in Milvus.
La proprietà collection.num_entities
potrebbe non riflettere il numero effettivo di righe in una raccolta Milvus dopo le operazioni di eliminazione. Questa proprietà fornisce una stima e potrebbe non tenere conto delle entità eliminate.
Per ottenere un conteggio preciso delle righe, eseguire una query count(*)
sulla raccolta. Ciò fornisce un conteggio preciso anche dopo le eliminazioni.
Sintassi Pymilvus:
collection = pymilvus.Collection(...)
collection.query(expr='', fields=['count(*)'])
Limitazioni: operazioni Db2 non supportate.
watsonx.data attualmente non supporta l'operazione ALTER TABLE DROP COLUMN per le tabelle organizzate per colonna Db2.
Per impostazione predefinita, le istanze Db2 creano tabelle in formato organizzato per colonna.
watsonx.data non supporta la creazione di tabelle organizzate per riga in Db2.
Limitazioni: gestione dei valori null in Elasticsearch.
Il connettore Elasticsearch richiede una definizione esplicita delle associazioni di indice per i campi per gestire i valori null durante il caricamento dei dati.
Limitazioni: caricamento di JSON nidificato con Elasticsearch.
Il connettore Elasticsearch richiede che gli utenti specifichino esplicitamente le strutture JSON nidificate come array di tipo ROW per il caricamento e la query corretti. Per elaborare tali strutture, utilizzare l'operazione UNNEST.
Limitazioni: Gli utenti possono creare 3 istanze del servizio Milvus per una singola istanza di watsonx.data in IBM Cloud.
Problema: Impossibile creare viste in Presto.
Presto descrive una vista in un database mappato come una TABELLA e non come una VISTA. Questo è evidente al programma JDBC che si connette al motore Presto.
Problema: l'utente non viene rimosso dal controllo accessi del catalogo durante la revoca dell'accesso ai dati.
Quando concedi l'accesso utente a un utente aggiungendolo ai criteri di controllo dei dati utilizzando la schermata Controllo accesso, l'utente viene elencato correttamente nel catalogo. Alla revoca dell'accesso utente dalla pagina Controllo accessi, l'utente rimane elencato rispetto al catalogo e continua ad avere accesso utente.
Problema: impossibile visualizzare i cataloghi previsti daPresto (Java ).
Gli utenti con privilegi di amministratore non sono in grado di visualizzare quanto previstoHive EPostgreSQL cataloghi daPresto (Java ).
Problema: l'interfaccia utente della console elenca utenti non validi.
watsonx.data utente (user1 ) invita un nuovo utente (user2 ) all'account utilizzando il file Gestire l'accesso e gli utenti schermo (Gestisci > Accesso (IAM) > Gestisci accesso e utenti ) e concede l'accesso a un ruolo (MetastoreAccess, Visualizzatore, Operatore, Editor, Amministratore). User2 ottiene l'accesso alle risorse nell'istanza watsonx.data tramite l'account user1. Inoltre, a user2 viene concesso l'accesso ai dati a livello di risorsa aggiungendo i criteri di controllo dati utilizzando la schermata Controllo accesso. Quando user1 rimuove user2 dall'account user1, user2 è ancora elencato nella scheda Controllo accessi a livello di risorsa.
Problema: impossibile visualizzare lo schema creato.
Quando un utente con il ruolo Utente e l'accesso di creazione (l'utente ha solo l'accesso di creazione) viene aggiunto a un database esterno, non può vedere gli schemi creati. Sebbene l'utente possa creare schemi, non può visualizzarli. La risposta del sistema è la seguente:
presto:default> show schemas;
Schema
--------
(0 rows)
Soluzione temporanea: fornire il privilegio select per lo schema creato dall'utente.
Problema: accesso negato durante la query di un database esterno.
Quando un utente con il ruolo Utente e l'accesso di creazione (l'utente ha solo l'accesso di creazione) viene aggiunto a un database esterno, non può eseguire la query di selezione dalla tabella che ha creato. Sebbene l'utente possa connettersi
aPresto (Java ) e creano tabelle e schemi, non possono eseguire query dalla tabella. Il sistema visualizza un messaggio Access Denied
.
Query 20230608_132213_00042_wpmk2 failed: Access Denied: Cannot select from columns [id] in table or view tab_appiduser_01
Soluzione temporanea: fornire il privilegio di selezione per la tabella creata dall'utente.
Problema: schema creato in un catalogo differente.
Gli schemi sono disponibili nei cataloghi Iceberg e Hive. Quando uno schema viene creato nel catalogo Iceberg, viene elencato nel catalogo Hive e viceversa.
Problema:Presto (Java ) non supporta l'eliminazione delle tabelle Iceberg.
Problema: DROP SCHEMA in Db2.
In Db2, lo schema può essere eliminato solo se è vuoto. L'avvio dell'istruzione DROP SCHEMA
rispetto a uno schema non vuoto può causare Db2 SQL Error SQLCODE=-478
e SQLSTATE=42893
.
Problema: istruzione CREATE VIEW supportata parzialmente da Db2.
Il connettore Db2 supporta parzialmente l'istruzione CREATE VIEW
. ILPresto (Java ) la sintassi SQL supportata non include la creazione di viste con nomi di colonna personalizzati (diversi dai nomi di colonna della tabella).
Problema: l'istruzione CREATE VIEW è parzialmente supportata da NPSaaS.
Il connettore NPSaaS supporta parzialmente l'istruzione CREATE VIEW
. ILPresto (Java ) La sintassi SQL supportata non include la creazione di viste con nomi di colonna personalizzati (diversi dai nomi di colonna della tabella).
Problema:Presto (Java ) non riconosce il percorso come directory.
Quando crei una nuova tabella con aPresto (Java )Hive connettore che utilizza unS3 cartella da una posizione esterna,Presto (Java ) non riconosce il percorso come directory e potrebbe verificarsi un errore.
Ad esempio, quando si crea una tabella clienti nella directory di destinazione DBCERT/tbint
in un bucket denominato dqmdbcertpq
utilizzando la console IBM Cloud UX e Aspera S3, si verifica il seguente errore: 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
Gli oggetti in un file system vengono memorizzati come oggetti e il relativo percorso. L'oggetto e percorso devono avere un metadati associato. Se il percorso non è associato ai metadati,Presto (Java ) non riesce a riconoscere l'oggetto e risponde che il percorso non è una directory.
Problema: assegnazione del privilegio di concessione o revoca.
L'assegnazione del privilegio Concedi o Revoca a un utente tramite la politica di accesso non funziona come previsto nei seguenti scenari:
-
User_A aggiunge un bucket e un catalogo Hive (ad esempio,
useracat02
). -
User_A crea uno schema e una tabella.
-
User_B e User_C vengono assegnati ai ruoli Utente al catalogo.
-
User_A aggiunge allow grant policy a User_B.
-
User_B si connette al catalogo ed esegue
grant select
su User_C.presto:default> grant select on useracat02.schema_test_01.tab_1 to "6ff74bf7-b71b-42f2-88d9-a98fdbaed304";
-
Quando User_C si connette al catalogo ed esegue il comando
select
sulla tabella, il comando ha esito negativo con il messaggio di accesso negato.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: creazione dello schema senza una posizione.
Quando si crea uno schema senza un'ubicazione, questo non viene elencato nell'elenco di schemi di alcun catalogo. Ad esempio, se crei uno schema senza specificare l'ubicazione del bucket, lo schema viene creato in HMS e non nel bucket. Quando si tenta di creare un nuovo schema con lo stesso nome, non riesce e risponde che lo schema esiste già.
Soluzione temporanea: specificare l'ubicazione del bucket quando si crea uno schema.
Problema: nomi univoci per schema e bucket.
Non è possibile creare uno schema e un bucket con lo stesso nome. Ad esempio, se si crea uno schema denominato "vendite" in un catalogo, lo stesso nome non può essere utilizzato per un altro schema in un altro catalogo. In modo simile, se si registra un bucket con il nome "salesbucket", non è possibile registrare un altro bucket con lo stesso, anche se il bucket si trova in un archivio oggetti differente.
Soluzione temporanea: utilizzare nomi univoci quando si creano schemi e bucket.
Problema: creazione dello schema per la tabella di destinazione.
Se lo schema non esiste, è necessario creare lo schema per la tabella di destinazione.
Problema: l'inserimento non riesce se il file CSV contiene un record non valido.
Lo strumento ibm - lh non supporta l'ignoramento del numero massimo di record non corretti per i file CSV se il campo di mancata corrispondenza è maggiore della definizione della tabella.
Problema: creazione dell'ubicazione dello schema con percorso.
Utilizzare una delle seguenti opzioni di posizione durante la creazione di uno schema:
- Ubicazione che punta a un bucket / percorso secondario senza un
/
finale. - Ubicazione che punta a un bucket / percorso secondario con un
/
finale - Consigliato per una migliore strutturazione.
Anche se puoi utilizzare un'ubicazione che punta a un bucket solo con o senza un /
finale, potrebbe portare a un errore. Pertanto, si consiglia di utilizzare un percorso secondario.
Problema:Presto (Java ) non supportano AS OF
con tavoli iceberg.
Presto (Java ) non supportano AS OF <time stamp>
comando in una query SELECT.
Soluzione temporanea: richiamare CALL iceberg_data_rollback_to_snapshot
per passare alla data / ora richiesta.
Se si utilizza CALL iceberg_data_rollback_to_snapshot
con una data / ora, non è possibile richiamare la procedura memorizzata per passare a una data / ora successiva. Utilizzare Spark SQL come alternativa.
Problema: solo il creatore ha accesso DROP sulla tabella in Apache Hive (API).
Solo il creatore di una tabella può eliminare la tabella che viene creata nel catalogo Apache Hive. Gli altri utenti non possono eliminare la tabella anche se dispongono di un accesso esplicito DROP alla tabella. Ricevono il messaggio Access Denied
.
Problema: i certificati forniti dagli utenti non sono supportati da watsonx.data.
Attualmente, i certificati forniti dall'utente non sono supportati in watsonx.data quando si aggiungono connessioni al database, bucket dell'archivio oggetti o quando si utilizza il programma di utilità ibm - lh.
Problema: nessuna colonna da analizzare dall'errore del file.
Quando si tenta di inserire una cartella da AWS S3 utilizzando lo strumento ibm - lh, è possibile che si verifichi il seguente errore se non vi sono file vuoti nella cartella:
No columns to parse from file
Soluzione temporanea: elencare innanzitutto le cartelle all'interno del bucket utilizzando il comando aws s3 ls
. Se non viene elencato alcun file vuoto, copiare tutti i file in un'altra cartella utilizzando il comando
aws s3 cp
.
I caratteri speciali nei nomi tabella di destinazione possono causare errori di inserimento.
L'inserimento ha esito negativo se il nome di una tabella di destinazione contiene caratteri speciali durante l'inserimento tramite la console web.
Soluzione temporanea: puoi inserire i dati utilizzando l'inserimento tramite la CLI Spark.
Limitazione:Presto (Java ) non supporta VARBINARY
tipo di dati.
La versione attuale diPresto (Java ) non supporta stringhe binarie con lunghezza. L'esecuzione di un'istruzione ALTER TABLE
su un database causa il seguente errore:
Unknown type 'varbinary(n)' for column 'testcolumn'
Questa è una limitazione in Preso e non in watsonx.data.
Limitazione: Eseguire il backup dei dati per evitare perdite di dati durante il lavoro con l'ambiente di sviluppo VS Code - Spark Labs.
Poiché i laboratori Spark sono di natura effimera, è necessario eseguire periodicamente il backup dei dati memorizzati per evitare una potenziale perdita di dati durante gli aggiornamenti o un crash del master Spark.