Per migliorare le prestazioni delle tue pipeline di dati, puoi eseguire il push di alcune operazioni di trasformazione su BigQuery anziché su Apache Spark. Il pushdown della trasformazione fa riferimento a un'impostazione che consente a un'operazione in una pipeline di dati di Cloud Data Fusion di essere inviata a BigQuery come motore di esecuzione. Di conseguenza, l'operazione e i relativi dati vengono trasferiti in BigQuery e l'operazione viene eseguita lì.
La trasformazione pushdown migliora le prestazioni delle pipeline che hanno più operazioni JOIN
complesse o altre trasformazioni supportate. L'esecuzione di alcune trasformazioni in BigQuery potrebbe essere più rapida rispetto a quella in Spark.
Le trasformazioni non supportate e tutte le trasformazioni di anteprima vengono eseguite in Spark.
Trasformazioni supportate
La trasformazione Pushdown è disponibile in Cloud Data Fusion versione 6.5.0 e successive, ma alcune delle seguenti trasformazioni sono supportate solo nelle versioni successive.
JOIN
operazioni
La trasformazione pushdown è disponibile per le operazioni
JOIN
in Cloud Data Fusion versione 6.5.0 e successive.Sono supportate le operazioni di base (sui tasti) e avanzate di
JOIN
.I join devono avere esattamente due fasi di input affinché l'esecuzione avvenga in BigQuery.
I join configurati per caricare uno o più input in memoria vengono eseguiti in Spark anziché in BigQuery, tranne nei seguenti casi:
- Se uno qualsiasi degli input per il join è già stato push-down.
- Se hai configurato l'esecuzione del join in SQL Engine (consulta l'opzione Fasi per forzare l'esecuzione).
Sink BigQuery
La trasformazione pushdown è disponibile per il sink BigQuery in Cloud Data Fusion versione 6.7.0 e successive.
Quando il sink BigQuery segue una fase eseguita in BigQuery, l'operazione che scrive i record in BigQuery viene eseguita direttamente in BigQuery.
Per migliorare le prestazioni con questo sink, devi avere quanto segue:
- L'account di servizio deve disporre dell'autorizzazione per creare e aggiornare le tabelle nel set di dati utilizzato dal sink BigQuery.
- I set di dati utilizzati per il pushdown della trasformazione e il sink BigQuery devono essere archiviati nella stessa località.
- L'operazione deve essere una delle seguenti:
Insert
(l'opzioneTruncate Table
non è supportata)Update
Upsert
GROUP BY
aggregazioni
La trasformazione pushdown è disponibile per le aggregazioni GROUP BY
in Cloud Data Fusion versione 6.7.0 e successive.
Le aggregazioni GROUP BY
in BigQuery sono disponibili per le seguenti operazioni:
Avg
Collect List
(i valori null vengono rimossi dall'array di output)Collect Set
(i valori null vengono rimossi dall'array di output)Concat
Concat Distinct
Count
Count Distinct
Count Nulls
Logical And
Logical Or
Max
Min
Standard Deviation
Sum
Sum of Squares
Corrected Sum of Squares
Variance
Shortest String
Longest String
Le aggregazioni GROUP BY
vengono eseguite in BigQuery nei seguenti casi:
- Segue una fase che è già stata spostata verso il basso.
- Hai configurato l'esecuzione in SQL Engine (consulta l'opzione Fasi per forzare l'esecuzione).
Deduplica aggregazioni
La funzionalità Pushdown della trasformazione è disponibile per deduplicare le aggregazioni in Cloud Data Fusion versione 6.7.0 e successive per le seguenti operazioni:
- Nessuna operazione di filtro specificata
ANY
(un valore non null per il campo desiderato)MIN
(il valore minimo per il campo specificato)MAX
(il valore massimo per il campo specificato)
Le seguenti operazioni non sono supportate:
FIRST
LAST
Le aggregazioni deduplicate vengono eseguite nel motore SQL nei seguenti casi:
- Segue una fase che è già stata spostata verso il basso.
- Hai configurato l'esecuzione in SQL Engine (vedi l'opzione Fasi per forzare l'esecuzione).
Pushdown origine BigQuery
BigQuery Source Pushdown è disponibile in Cloud Data Fusion versioni 6.8.0 e successive.
Quando un'origine BigQuery segue una fase compatibile per il push-down di BigQuery, la pipeline può eseguire tutte le fasi compatibili all'interno di BigQuery.
Cloud Data Fusion copia i record necessari per eseguire la pipeline in BigQuery.
Quando utilizzi BigQuery Source Pushdown, le proprietà di partizionamento e clustering delle tabelle vengono conservate, in modo da utilizzare queste proprietà per ottimizzare ulteriori operazioni, come i join.
Requisiti aggiuntivi
Per utilizzare BigQuery Source Pushdown, devono essere soddisfatti i seguenti requisiti:
L'account di servizio configurato per il pushdown della trasformazione BigQuery deve disporre delle autorizzazioni per leggere le tabelle nel set di dati dell'origine BigQuery.
I set di dati utilizzati nell'origine BigQuery e il set di dati configurato per il pushdown della trasformazione devono essere archiviati nella stessa località.
Aggregazioni di finestre
La trasformazione pushdown è disponibile per le aggregazioni di finestre in Cloud Data Fusion versioni 6.9 e successive. Le aggregazioni di finestre in BigQuery sono supportate per le seguenti operazioni:
Rank
Dense Rank
Percent Rank
N tile
Row Number
Median
Continuous Percentile
Lead
Lag
First
Last
Cumulative distribution
Accumulate
Le aggregazioni di finestre vengono eseguite in BigQuery nei seguenti casi:
- Segue una fase che è già stata spostata verso il basso.
- L'hai configurato per l'esecuzione in SQL Engine (vedi l'opzione Fasi per forzare il push-down).
Pushdown filtro Wrangler
Wrangler Filter Pushdown è disponibile in Cloud Data Fusion 6.9 e versioni successive.
Quando utilizzi il plug-in Wrangler, puoi eseguire il push dei filtri, noti come operazioni Precondition
, in modo che vengano eseguiti in BigQuery anziché in Spark.
Il filtro push-down è supportato solo con la modalità SQL per Precondizioni, che è stata rilasciata anche nella versione 6.9. In questa modalità, il plug-in accetta un'espressione di precondizione in SQL standard ANSI.
Se per le precondizioni viene utilizzata la modalità SQL, le direttive e le direttive definite dall'utente vengono disabilitate per il plug-in Wrangler, in quanto non sono supportate con le precondizioni in modalità SQL.
La modalità SQL per le precondizioni non è supportata per i plug-in Wrangler con più input quando è abilitata la funzionalità Pushdown della trasformazione. Se utilizzata con più input, questa fase Wrangler con condizioni di filtro SQL viene eseguita in Spark.
I filtri vengono eseguiti in BigQuery nei seguenti casi:
- Segue una fase che è già stata spostata verso il basso.
- L'hai configurato per l'esecuzione in SQL Engine (vedi l'opzione Fasi per forzare il push-down).
Metriche
Per ulteriori informazioni sulle metriche fornite da Cloud Data Fusion per la parte della pipeline eseguita in BigQuery, consulta Metriche della pipeline push-down BigQuery.
Quando utilizzare il pushdown della trasformazione
L'esecuzione delle trasformazioni in BigQuery prevede quanto segue:
- Scrittura di record in BigQuery per le fasi supportate nella pipeline.
- Esecuzione delle fasi supportate in BigQuery.
- Lettura dei record da BigQuery dopo l'esecuzione delle trasformazioni supportate, a meno che non siano seguite da un sink di BigQuery.
A seconda delle dimensioni dei set di dati, potrebbe verificarsi un notevole overhead per la rete, che può avere un impatto negativo sui tempi complessivi di esecuzione della pipeline quando è abilitata la funzionalità Pushdown della trasformazione.
A causa dell'overhead della rete, consigliamo di utilizzare la funzionalità Pushdown per la trasformazione nei seguenti casi:
- Più operazioni supportate vengono eseguite in sequenza (senza passaggi tra le fasi).
- I miglioramenti delle prestazioni derivanti dall'esecuzione delle trasformazioni da BigQuery, rispetto a Spark, superano la latenza dello spostamento dei dati all'interno e possibilmente all'esterno di BigQuery.
Come funziona
Quando esegui una pipeline che utilizza la funzionalità Pushdown della trasformazione, Cloud Data Fusion esegue le fasi di trasformazione supportate in BigQuery. Tutte le altre fasi della pipeline vengono eseguite in Spark.
Durante l'esecuzione delle trasformazioni:
Cloud Data Fusion carica i set di dati di input in BigQuery, scrivendo i record in Cloud Storage ed eseguendo un job di caricamento BigQuery.
Le operazioni
JOIN
e le trasformazioni supportate vengono quindi eseguite come job BigQuery utilizzando le istruzioni SQL.Se è necessaria un'ulteriore elaborazione dopo l'esecuzione dei job, i record possono essere esportati da BigQuery a Spark. Tuttavia, se l'opzione Tentativo di copiare direttamente nei sink BigQuery è abilitata e il sink di BigQuery segue una fase eseguita in BigQuery, i record vengono scritti direttamente nella tabella sink di BigQuery di destinazione.
Il seguente diagramma mostra in che modo la trasformazione Pushdown esegue trasformazioni supportate in BigQuery anziché in Spark.
best practice
Regola le dimensioni di cluster ed esecutore
Per ottimizzare la gestione delle risorse nella pipeline:
Utilizza il numero corretto di worker (nodi) del cluster per un carico di lavoro. In altre parole, ottieni il massimo dal cluster Dataproc di cui è stato eseguito il provisioning mediante l'utilizzo completo della CPU e della memoria disponibili per l'istanza, beneficiando al contempo della velocità di esecuzione di BigQuery per i job di grandi dimensioni.
Migliora il parallelismo nelle tue pipeline utilizzando i cluster con scalabilità automatica.
Modifica le configurazioni delle risorse nelle fasi della pipeline in cui viene eseguito il push o il pull dei record da BigQuery durante l'esecuzione della pipeline.
Consigliato: prova ad aumentare il numero di core CPU per le risorse esecutore (fino al numero di core CPU utilizzati dal nodo worker). Gli esecutori ottimizzano l'uso della CPU durante i passaggi di serializzazione e deserializzazione man mano che i dati entrano ed escono da BigQuery. Per ulteriori informazioni, consulta Dimensioni del cluster.
Un vantaggio dell'esecuzione delle trasformazioni in BigQuery è che le
pipeline possono essere eseguite su cluster Dataproc più piccoli. Se le unioni sono le operazioni della tua pipeline che richiedono un uso intensivo delle risorse, puoi sperimentare con cluster di dimensioni ridotte, poiché le operazioni JOIN
più pesanti vengono ora eseguite in BigQuery, in modo da poter ridurre potenzialmente i costi complessivi di calcolo.
Recupera i dati più velocemente con l'API BigQuery Storage Read
Dopo che BigQuery ha eseguito le trasformazioni, la pipeline potrebbe contenere altre fasi da eseguire in Spark. In Cloud Data Fusion 6.7.0 e versioni successive, Transformation Pushdown supporta l'API BigQuery Storage Read, che migliora la latenza e velocizza le operazioni di lettura in Spark. Può ridurre i tempi complessivi di esecuzione della pipeline.
L'API legge i record in parallelo, quindi ti consigliamo di modificare le dimensioni dell'esecutore di conseguenza. Se in BigQuery vengono eseguite operazioni che richiedono molte risorse, riduci l'allocazione della memoria per gli esecutori in modo da migliorare il parallelismo durante l'esecuzione della pipeline (consulta Regolare le dimensioni di cluster ed esecutori).
L'API BigQuery Storage Read è disabilitata per impostazione predefinita. Puoi abilitarlo negli ambienti di esecuzione in cui è installato Scala 2.12 (tra cui Dataproc 2.0 e Dataproc 1.5).
Considera le dimensioni del set di dati
Considera le dimensioni dei set di dati nelle operazioni JOIN
. Per le operazioni JOIN
che generano un numero sostanziale di record di output, ad esempio qualcosa che assomiglia a un'operazione JOIN
incrociata, la dimensione del set di dati risultante potrebbe essere ordini di grandezza maggiori del set di dati di input. Inoltre, considera l'overhead associato al pull di questi record in Spark quando si verificano ulteriori elaborazioni Spark per questi record, ad esempio una trasformazione o un sink, nel contesto delle prestazioni complessive della pipeline.
Riduci i dati distorti
Le operazioni JOIN
in caso di dati fortemente disallineati potrebbero causare il superamento dei limiti di utilizzo delle risorse da parte del job BigQuery, causando così la mancata riuscita dell'operazione JOIN
. Per evitare che questo accada, vai alle impostazioni del plug-in Joiner e identifica l'input disallineato nel campo Stage di input inclinata. Ciò consente a Cloud Data Fusion di organizzare gli input in modo da ridurre il rischio che l'istruzione BigQuery superi i limiti.