Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Connessioni JDBC
Alcuni tipi di database, tipicamente relazionali, supportano la connessione tramite lo JDBC standard. Per ulteriori informazioni in meritoJDBC, consultate la JDBC API documentazione Java
I JDBC connectionType valori includono quanto segue:
-
"connectionType": "sqlserver"
: indica una connessione a un database di Microsoft SQL Server. -
"connectionType": "mysql"
: Indica una connessione a un database MySQL. -
"connectionType": "oracle"
: designa una connessione a un database Oracle. -
"connectionType": "postgresql"
: Indica una connessione a un database SQL Postgre. -
"connectionType": "redshift"
: designa una connessione a un database Amazon Redshift. Per ulteriori informazioni, consulta Connessioni Redshift.
La tabella seguente elenca le versioni dei JDBC driver supportate da AWS Glue.
Product | JDBCversioni dei driver per Glue 5.0 | JDBCversioni dei driver per Glue 4.0 | JDBCversioni dei driver per Glue 3.0 | JDBCversioni dei driver per Glue 0.9, 1.0, 2.0 |
---|---|---|---|---|
Microsoft SQL Server | 10.2.0 | 9,40 | 7.x | 6.x |
Mio SQL | 8.0.33 | 8.0.23 | 8.0.23 | 5.1 |
Oracle Database | 23,3,023,09 | 21,7 | 21,1 | 11.2 |
Poster SQL | 42.7.3 | 42,36 | 4,2,18 | 42.1.x |
Amazon Redshift* | redshift-jdbc42-2.1.0.29 | redshift-jdbc42-2.1.0.16 | redshift-jdbc41-1.2.12.1017 | redshift-jdbc41-1.2.12.1017 |
* Per il tipo di connessione Amazon Redshift, tutte le altre coppie nome/valore dell'opzione incluse nelle opzioni di connessione per una JDBC connessione, incluse le opzioni di formattazione, vengono passate direttamente allo Spark sottostante. SQL DataSource Nei lavori AWS Glue with Spark in AWS Glue 4.0 e versioni successive, il connettore nativo AWS Glue per Amazon Redshift utilizza l'integrazione Amazon Redshift per Apache Spark. Per ulteriori informazioni, consulta la pagina Integrazione di Amazon Redshift per Apache Spark. Nelle versioni precedenti, consulta la sezione Amazon Redshift data source for Spark
Per configurare Amazon VPC per la connessione agli Amazon RDS Data Store utilizzandoJDBC, consultaConfigurazione di Amazon VPC per connessioni JDBC agli archivi dati Amazon RDS da AWS Glue.
Nota
AWS I Glue job vengono associati solo a una sottorete durante un'esecuzione. Ciò potrebbe influire sulla capacità di connettersi a più origini dati tramite lo stesso processo. Questo comportamento non è limitato alle JDBC fonti.
Argomenti
JDBCriferimento alle opzioni di connessione
Se hai già definito una connessione JDBC AWS Glue, puoi riutilizzare le proprietà di configurazione in essa definite, come: url, user e password; in questo modo non devi specificarle nel codice come opzioni di connessione. Questa funzionalità è disponibile in AWS Glue 3.0 e versioni successive. A tale scopo, utilizza le seguenti proprietà di connessione:
-
"useConnectionProperties"
: impostalo su "true" per indicare che desideri utilizzare la configurazione da una connessione. -
"connectionName"
: inserisci il nome della connessione da cui recuperare la configurazione; la connessione deve essere definita nella stessa regione del processo.
Usa queste opzioni di connessione con JDBC le connessioni:
-
"url"
: (Obbligatorio) Il JDBC URL per il database. -
"dbtable"
: (obbligatorio) la tabella database da cui leggere. Per gli archivi JDBC dati che supportano gli schemi all'interno di un database, specificareschema.table-name
. Se non viene fornito alcuno schema, viene usato lo schema "pubblico" predefinito. -
"user"
: (obbligatorio) Il nome utente da usare per la connessione. -
"password"
: (obbligatorio) la password da usare per la connessione. -
(Facoltativo) Le seguenti opzioni consentono di fornire un JDBC driver personalizzato. Usa queste opzioni se devi usare un driver che AWS Glue non supporta nativamente.
ETLjobs può utilizzare versioni di JDBC driver diverse per l'origine e la destinazione dei dati, anche se l'origine e la destinazione sono lo stesso prodotto di database. In questo modo è possibile eseguire la migrazione dei dati tra database di origine e di destinazione con versioni diverse. Per utilizzare queste opzioni, devi prima caricare il JAR file del JDBC driver su Amazon S3.
-
"customJdbcDriverS3Path"
: il percorso Amazon S3 del driver personalizzatoJDBC. -
"customJdbcDriverClassName"
: il nome della classe del JDBC driver.
-
-
"bulkSize"
: (Facoltativo) Utilizzato per configurare inserti paralleli per velocizzare i carichi alla rinfusa verso gli obiettivi. JDBC Specifica un valore intero per il grado di parallelismo da utilizzare durante la scrittura o l'inserimento di dati. Questa opzione è utile per migliorare le prestazioni delle scritture in database come Arch User Repository (). AUR -
"hashfield"
(Facoltativo) Una stringa, utilizzata per specificare il nome di una colonna nella JDBC tabella da utilizzare per dividere i dati in partizioni durante la lettura da JDBC tabelle in parallelo. Fornisci "hashfield" O "hashexpression". Per ulteriori informazioni, consulta Lettura in parallelo dalle tabelle JDBC. -
"hashexpression"
(Facoltativo) Una clausola SQL select che restituisce un numero intero. Utilizzato per dividere i dati di una JDBC tabella in partizioni durante la lettura da JDBC tabelle in parallelo. Fornisci "hashfield" O "hashexpression". Per ulteriori informazioni, consulta Lettura in parallelo dalle tabelle JDBC. -
"hashpartitions"
: (facoltativo) un numero intero positivo. Utilizzato per specificare il numero di letture parallele della JDBC tabella durante la lettura da JDBC tabelle in parallelo. Impostazione predefinita: 7. Per ulteriori informazioni, consulta Lettura in parallelo dalle tabelle JDBC. -
"sampleQuery"
: (Facoltativo) Un'istruzione di SQL interrogazione personalizzata. Utilizzata per specificare un sottoinsieme di informazioni in una tabella per recuperare un campione del contenuto della tabella. Se configurata indipendentemente dai dati, può essere meno efficiente dei DynamicFrame metodi e causare timeout o errori di esaurimento della memoria. Per ulteriori informazioni, consulta Utilizzare sampleQuery. -
"enablePartitioningForSampleQuery"
: (facoltativo) un valore booleano. Valore predefinito: false. Utilizzato per abilitare la lettura da JDBC tabelle in parallelo durante la specificazione.sampleQuery
Se impostato su true,sampleQuery
deve terminare con «where» o «and» affinché AWS Glue aggiunga le condizioni di partizionamento. Per ulteriori informazioni, consulta Utilizzare sampleQuery. -
"sampleSize"
: (facoltativo) un numero intero positivo. Limita il numero di righe restituite dalla query di esempio. Funziona solo quandoenablePartitioningForSampleQuery
è true. Se il partizionamento non è abilitato, è invece necessario aggiungere direttamente"limit x"
nellasampleQuery
per limitare le dimensioni. Per ulteriori informazioni, consulta Utilizzare sampleQuery.
Utilizzare sampleQuery
Questa sezione illustra come utilizzare sampleQuery
, sampleSize
e enablePartitioningForSampleQuery
.
sampleQuery
può essere un modo efficace per campionare alcune righe del set di dati. Per impostazione predefinita, la query viene eseguita da un singolo esecutore. Se configurato indipendentemente dai dati, può essere meno efficiente dei DynamicFrame metodi e causare timeout o errori di esaurimento della memoria. L'esecuzione SQL sul database sottostante come parte della ETL pipeline è generalmente necessaria solo per motivi di prestazioni. Se stai cercando di visualizzare in anteprima alcune righe del tuo set di dati, prendi in considerazione l'utilizzo di show. Se stai cercando di trasformare il tuo set di dati utilizzando un moduloSQL, valuta la possibilità di utilizzare toDF per definire una SQL trasformazione Spark rispetto ai dati in un modulo. DataFrame
Anche se la query può manipolare diverse tabelle, dbtable
resta obbligatoria.
sampleQuery Usalo per recuperare un campione della tua tabella
Quando si utilizza sampleQuery il comportamento predefinito per recuperare un campione dei dati, AWS Glue non prevede un throughput sostanziale, quindi esegue la query su un singolo esecutore. Per limitare i dati forniti e non causare problemi di prestazioni, ti consigliamo di inserire una SQL clausola. LIMIT
Esempio Utilizzare sampleQuery senza partizionamento
Il codice di esempio seguente mostra come utilizzare sampleQuery
senza partizionamento.
//A full sql query statement. val query = "select name from
$tableName
where age > 0 limit 1" val connectionOptions = JsonOptions(Map( "url" -> url, "dbtable" -> tableName, "user" -> user, "password" -> password, "sampleQuery" -> query )) val dyf = glueContext.getSource("mysql", connectionOptions) .getDynamicFrame()
Utilizzo su set di dati più sampleQuery grandi
Se stai leggendo un set di dati di grandi dimensioni, potresti dover abilitare il JDBC partizionamento per interrogare una tabella in parallelo. Per ulteriori informazioni, consulta Lettura in parallelo dalle tabelle JDBC. Per utilizzarlo sampleQuery
con il JDBC partizionamento, imposta su true. enablePartitioningForSampleQuery
L'attivazione di questa funzionalità richiede di apportare alcune modifiche alla sampleQuery
.
Quando si utilizza il JDBC partizionamento consampleQuery
, la query deve terminare con «where» o «and» affinché AWS Glue aggiunga le condizioni di partizionamento.
Se desideri limitare i risultati della lettura da JDBC tabelle in parallelo, imposta il "sampleSize"
parametro anziché specificare una LIMIT
clausola. sampleQuery
Esempio Utilizzare sampleQuery con il partizionamento JDBC
Il seguente esempio di codice mostra come utilizzare sampleQuery
con JDBC il partizionamento.
//note that the query should end with "where" or "and" if use with JDBC partitioning. val query = "select name from
$tableName
where age > 0 and" //Enable JDBC partitioning by setting hashfield. //to use sampleQuery with partitioning, set enablePartitioningForSampleQuery. //use sampleSize to limit the size of returned data. val connectionOptions = JsonOptions(Map( "url" -> url, "dbtable" -> tableName, "user" -> user, "password" -> password, "hashfield" -> primaryKey, "sampleQuery" -> query, "enablePartitioningForSampleQuery" -> true, "sampleSize" -> "1" )) val dyf = glueContext.getSource("mysql", connectionOptions) .getDynamicFrame()
Note e restrizioni:
Le query di esempio non possono essere utilizzate insieme ai segnalibri del processo. Lo stato del segnalibro verrà ignorato quando viene fornita la configurazione per entrambi.
Usa un driver personalizzato JDBC
I seguenti esempi di codice mostrano come leggere e scrivere su JDBC database con JDBC driver personalizzati. Essi dimostrano la lettura da una versione di un prodotto di database e la scrittura a una versione successiva dello stesso prodotto.