Risolvere i problemi di migrazione
Questo documento ti aiuta a risolvere i problemi comuni durante la migrazione del data warehouse (come Teradata, Amazon Redshift, Oracle o Apache Hive) a BigQuery, inclusi i problemi relativi alla valutazione della migrazione, alla traduzione SQL interattiva e batch e alla generazione di metadati utilizzando lo strumento di estrazione da riga di comando dwh-migration-dumper.
Per esaminare i dettagli di esecuzione dei job, i codici di errore e l'utilizzo degli slot per le query e i job migrati, puoi anche eseguire query sulla visualizzazione INFORMATION_SCHEMA.JOBS.
Valutazione della migrazione
Le sezioni seguenti spiegano i problemi comuni e le tecniche di risoluzione dei problemi per la migrazione del data warehouse a BigQuery.
dwh-migration-dumper errori dello strumento
Per risolvere gli errori e gli avvisi nell'output del terminale dello strumento dwh-migration-dumper
che si sono verificati durante l'estrazione dei log di query o dei metadati, consulta
Risoluzione dei problemi relativi alla generazione dei metadati.
Errori di migrazione di Hive
Le sezioni seguenti descrivono i problemi comuni che potresti riscontrare quando pianifichi di eseguire la migrazione del data warehouse da Hive a BigQuery.
L'hook di logging di estrazione dei log delle query hadoop-migration-assessment scrive messaggi di log di debug nei log
hive-server2. Se riscontri problemi, esamina i log di debug dell'hook di logging, che contengono la stringa MigrationAssessmentLoggingHook.
Gestire l'errore ClassNotFoundException
Questo errore potrebbe essere causato dal posizionamento errato del file JAR
dell'hook di logging. Assicurati di aver aggiunto il file JAR alla cartella auxlib sul
cluster Hive. In alternativa, puoi specificare il percorso completo
al file JAR nella proprietà hive.aux.jars.path, ad esempio
file://AUXLIB_PATH/HiveMigrationAssessmentQueryLogsHooks_deploy.jar.
Le sottocartelle non vengono visualizzate nella cartella configurata
Questo problema potrebbe essere causato da una configurazione errata o da problemi durante l'inizializzazione dell'hook di logging.
Cerca nei log di debug di hive-server2 i seguenti
messaggi di hook di logging:
Unable to initialize logger, logging disabled
Log dir configuration key 'dwhassessment.hook.base-directory' is not set, logging disabled.
Error while trying to set permission
Esamina i dettagli del problema e verifica se devi correggere qualcosa per risolverlo.
I file non vengono visualizzati nella cartella
Questo problema potrebbe essere causato da problemi riscontrati durante l'elaborazione degli eventi o durante la scrittura in un file.
Cerca nei log di debug di hive-server2 i seguenti
messaggi di hook di logging:
Failed to close writer for file
Got exception while processing event
Error writing record for query
Esamina i dettagli del problema e verifica se devi correggere qualcosa per risolverlo.
Alcuni eventi di query non vengono rilevati
Questo problema potrebbe essere causato da un overflow della coda del thread di hook di logging.
Cerca nei log di debug di hive-server2 il seguente messaggio
del hook di logging:
Writer queue is full. Ignoring event
Se trovi questo messaggio, valuta la possibilità di aumentare il parametro dwhassessment.hook.queue.capacity.
Traduttore SQL interattivo
Le sezioni seguenti descrivono gli errori più comuni riscontrati durante l'utilizzo del traduttore SQL interattivo.
Problemi di traduzione di RelationNotFound o AttributeNotFound
Dopo aver tradotto una query utilizzando il traduttore SQL interattivo, potresti riscontrare un errore di traduzione con l'errore RelationNotFound o AttributeNotFound.
Puoi trovare le traduzioni non riuscite andando alla pagina Dettagli traduzione in BigQuery nella console Cloud de Confiance e aprendo la scheda Messaggi di log.
Per garantire la traduzione più accurata, puoi inserire le istruzioni del linguaggio di definizione dei dati (DDL) per qualsiasi tabella utilizzata in una query prima della query stessa. Ad esempio, se vuoi tradurre la query Amazon Redshift
select table1.field1, table2.field1 from table1, table2 where table1.id = table2.id;,
inserisci le seguenti istruzioni SQL nel
traduttore SQL interattivo:
create table schema1.table1 (id int, field1 int, field2 varchar(16));
create table schema1.table2 (id int, field1 varchar(30), field2 date);
select table1.field1, table2.field1
from table1, table2
where table1.id = table2.id;
Risolvere i problemi di traduzione con Gemini
Per correggere i job di traduzione non riusciti con gli errori RelationNotFound o
AttributeNotFound, puoi anche utilizzare Gemini per risolvere questi
problemi:
- In BigQuery nella console Cloud de Confiance , vai alla pagina Dettagli traduzione e apri la scheda Messaggi di log.
- Fai clic sulla query con il messaggio
RelationNotFoundoAttributeNotFoundnella colonna Categoria. - Fai clic su Correzione suggerita.
- Fai clic su Applica.
- Per tradurre di nuovo la query, fai clic su Traduci.
Traduttore SQL batch
Le sezioni seguenti descrivono gli errori più comuni riscontrati durante l'utilizzo del traduttore SQL batch.
Problemi di traduzione di RelationNotFound o AttributeNotFound
Dopo aver tradotto una query utilizzando il
traduttore SQL batch,
potresti riscontrare una traduzione non riuscita con l'errore RelationNotFound o
AttributeNotFound.
Puoi trovare le traduzioni non riuscite andando alla pagina Dettagli traduzione in BigQuery nella console Cloud de Confiance e aprendo la scheda Messaggi di log.
La traduzione funziona meglio con DDL di metadati. Quando non è possibile trovare le definizioni degli oggetti SQL, il motore di traduzione genera problemi RelationNotFound o AttributeNotFound. Ti consigliamo di utilizzare lo strumento di estrazione dei metadati per generare pacchetti di metadati
per assicurarti che siano presenti tutte le definizioni degli oggetti. L'aggiunta di metadati è il
primo passaggio consigliato per risolvere la maggior parte degli errori di traduzione, perché questo passaggio
spesso corregge molti altri errori causati indirettamente dalla mancanza di metadati.
Per saperne di più, consulta Genera metadati per la traduzione e la valutazione.
Risolvere i problemi di traduzione con Gemini
Per correggere i job di traduzione non riusciti con gli errori RelationNotFound o
AttributeNotFound, puoi anche utilizzare Gemini per risolvere questi
problemi:
- Vai alla pagina Dettagli traduzione e apri la scheda Messaggi di log.
- Fai clic sulla query con il messaggio
RelationNotFoundoAttributeNotFoundnella colonna Categoria. Per andare al file e alla riga contenenti l'errore nella scheda Codice, fai clic su
messaggio di errore.
Nella colonna Azione, fai clic su Correzione suggerita.
Seleziona una delle seguenti opzioni, Applica o Applica ed esegui di nuovo:
- Per copiare il file dello schema generato dalla directory di output alla directory di input, fai clic su Applica.
- Per copiare il file dello schema generato dalla directory di output alla directory di input e aprire una finestra di ripetizione, fai clic su Applica ed esegui di nuovo.
Genera metadati per la traduzione e la valutazione
Le sezioni seguenti spiegano alcuni problemi comuni e tecniche di risoluzione dei problemi
per lo strumento dwh-migration-dumper.
Errore di memoria insufficiente
L'errore java.lang.OutOfMemoryError nell'output del terminale dello strumento dwh-migration-dumper
è spesso correlato a una memoria insufficiente per l'elaborazione dei dati recuperati.
Per risolvere questo problema, aumenta la memoria disponibile o riduci il numero di
thread di elaborazione.
Puoi aumentare la memoria massima esportando la variabile di ambiente JAVA_OPTS:
Linux
export JAVA_OPTS="-Xmx4G"
Windows
set JAVA_OPTS="-Xmx4G"
Puoi ridurre il numero di thread di elaborazione (il valore predefinito è 32) includendo
il valore del flag --thread-pool-size. Questa opzione è supportata solo per i connettori hiveql e redshift*:
dwh-migration-dumper --thread-pool-size=1
Gestione di un errore WARN...Task failed
A volte potresti visualizzare un errore WARN [main] o.c.a.d.MetadataDumper [MetadataDumper.java:107] Task failed: …
nell'output del terminale dello strumento dwh-migration-dumper. Lo strumento di estrazione
invia più query al sistema di origine e l'output di ogni query
viene scritto nel proprio file. La visualizzazione di questo problema indica che una di queste
query non è andata a buon fine. Tuttavia, l'errore di una query non impedisce l'esecuzione
delle altre query. Se vedi più di un paio di errori WARN, esamina
i dettagli del problema e verifica se devi correggere qualcosa
per eseguire correttamente la query. Ad esempio, se l'utente del database che hai specificato
quando hai eseguito lo strumento di estrazione non dispone delle autorizzazioni per leggere tutti i metadati,
riprova con un utente con le autorizzazioni corrette.
File ZIP danneggiato
Per convalidare il file ZIP dello strumento dwh-migration-dumper, scarica il
file SHA256SUMS.txt
ed esegui questo comando:
Bash
sha256sum --check SHA256SUMS.txt
Il risultato OK conferma che la verifica del checksum è andata a buon fine. Qualsiasi altro messaggio
indica un errore di verifica:
FAILED: computed checksum did NOT match: il file ZIP è danneggiato e deve essere scaricato di nuovo.FAILED: listed file could not be read: non è possibile trovare la versione del file ZIP. Scarica i file ZIP e di checksum dalla stessa versione e inseriscili nella stessa directory.
Windows PowerShell
(Get-FileHash RELEASE_ZIP_FILENAME).Hash -eq ((Get-Content SHA256SUMS.txt) -Split " ")[0]
Sostituisci RELEASE_ZIP_FILENAME con il nome del file ZIP scaricato della release dello strumento di estrazione da riga di comando dwh-migration-dumper, ad esempio dwh-migration-tools-v1.0.52.zip.
Il risultato True conferma che la verifica del checksum è andata a buon fine.
Il risultato False indica un errore di verifica. Scarica i file ZIP e di checksum
dalla stessa versione di release e inseriscili nella stessa
directory.
L'estrazione dei log delle query Teradata è lenta
Per migliorare il rendimento delle tabelle di unione specificate dai flag -Dteradata-logs.query-logs-table e -Dteradata-logs.sql-logs-table, puoi includere una colonna aggiuntiva di tipo DATE nella condizione JOIN.
Questa colonna deve essere definita in entrambe le tabelle e deve far parte dell'indice primario partizionato. Per includere questa colonna, utilizza il flag -Dteradata-logs.log-date-column.
L'esempio seguente mostra come utilizzare il flag -Dteradata-logs.log-date-column:
Bash
dwh-migration-dumper \ -Dteradata-logs.query-logs-table=historicdb.ArchivedQryLogV \ -Dteradata-logs.sql-logs-table=historicdb.ArchivedDBQLSqlTbl \ -Dteradata-logs.log-date-column=ArchiveLogDate
Windows PowerShell
dwh-migration-dumper ` "-Dteradata-logs.query-logs-table=historicdb.ArchivedQryLogV" ` "-Dteradata-logs.sql-logs-table=historicdb.ArchivedDBQLSqlTbl" ` "-Dteradata-logs.log-date-column=ArchiveLogDate"
Limite di dimensioni delle righe Teradata superato
Teradata versione 15 ha un limite di 64 kB per le dimensioni delle righe. Se il limite viene superato, lo strumento di estrazione non va a buon fine e viene visualizzato il seguente messaggio:
[Error 9804] [SQLState HY000] Response Row size or Constant Row size overflow
Per risolvere questo errore, aumenta il limite di righe a 1 MB o dividi le righe in più righe:
- Installa e attiva la funzionalità 1 MB Perm and Response Rows e il software TTU corrente. Per ulteriori informazioni, consulta Teradata Database Message 9804.
- Suddividi il testo della query lunga in più righe utilizzando i flag
-Dteradata.metadata.max-text-lengthe-Dteradata-logs.max-sql-length.
Il comando seguente mostra come utilizzare il
flag -Dteradata.metadata.max-text-length per dividere il testo di una query lunga in
più righe di massimo 10.000 caratteri ciascuna:
Bash
dwh-migration-dumper \ --connector teradata \ -Dteradata.metadata.max-text-length=10000
Windows PowerShell
dwh-migration-dumper ` --connector teradata ` "-Dteradata.metadata.max-text-length=10000"
Il seguente comando mostra come utilizzare il flag -Dteradata-logs.max-sql-length per dividere il testo di una query lunga in più righe di massimo 10.000 caratteri ciascuna:
Bash
dwh-migration-dumper \ --connector teradata-logs \ -Dteradata-logs.max-sql-length=10000
Windows PowerShell
dwh-migration-dumper ` --connector teradata-logs ` "-Dteradata-logs.max-sql-length=10000"
Problema di connessione a Oracle
In casi comuni come una password o un nome host non validi, lo strumento dwh-migration-dumper
stampa un messaggio di errore significativo che descrive il problema principale. Tuttavia, in alcuni
casi, il messaggio di errore restituito dal server Oracle potrebbe essere
generico e difficile da analizzare.
Uno di questi problemi è IO Error: Got minus one from a read call. Questo errore
indica che la connessione al server Oracle è stata
stabilita, ma il server non ha accettato il client e ha chiuso la connessione.
Questo problema si verifica in genere quando il server accetta solo connessioni TCPS. Per
impostazione predefinita, lo strumento dwh-migration-dumper utilizza il protocollo TCP. Per risolvere il problema, devi
ignorare l'URL di connessione JDBC di Oracle.
Anziché fornire i flag oracle-service, host e port, puoi
risolvere il problema fornendo il flag url nel seguente formato:
jdbc:oracle:thin:@tcps://HOST_NAME:PORT/ORACLE_SERVICE.
In genere, il numero di porta TCPS utilizzato dal server Oracle è
2484.
Il seguente esempio mostra come specificare l'URL di connessione nel comando:
dwh-migration-dumper \
--connector oracle-stats \
--url "jdbc:oracle:thin:@tcps://HOST_NAME:PORT/ORACLE_SERVICE" \
--assessment \
--driver "JDBC_DRIVER_PATH" \
--user "USER" \
--password
Oltre a modificare il protocollo di connessione in TCPS, potrebbe essere necessario
fornire la configurazione SSL trustStore necessaria per verificare il
certificato server Oracle. Una configurazione SSL mancante genera
un messaggio di errore Unable to find valid certification path. Per risolvere questo problema, imposta la variabile di ambiente JAVA_OPTS:
set JAVA_OPTS=-Djavax.net.ssl.trustStore="JKS_FILE_LOCATION" -Djavax.net.ssl.trustStoreType=JKS -Djavax.net.ssl.trustStorePassword="PASSWORD"
A seconda della configurazione del server Oracle, potresti anche dover fornire la configurazione keyStore. Per ulteriori informazioni sulle opzioni di configurazione, consulta SSL con il driver JDBC Oracle.
Passaggi successivi
- Scopri di più sulla panoramica della migrazione.
- Scopri come eseguire una valutazione della migrazione.
- Scopri come tradurre le query con il traduttore SQL interattivo.
- Scopri come eseguire la migrazione del codice con il traduttore SQL batch.
- Scopri come generare metadati per la traduzione e la valutazione.