Panoramica del pushdown delle trasformazioni

Per migliorare le prestazioni delle pipeline di dati, puoi inviare alcune operazioni di trasformazione a BigQuery anziché ad Apache Spark. Il pushdown delle trasformazioni si riferisce a un'impostazione che consente di inviare un'operazione in una pipeline di dati di Cloud Data Fusion a BigQuery come motore di esecuzione. Di conseguenza, l'operazione e i relativi dati vengono trasferiti a BigQuery, dove viene eseguita l'operazione.

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 all'esecuzione in Spark.

Le trasformazioni non supportate e tutte le trasformazioni di anteprima vengono eseguite in Spark.

Trasformazioni supportate

Il trasferimento delle trasformazioni è disponibile in Cloud Data Fusion 6.5.0 e versioni successive, ma alcune delle seguenti trasformazioni sono supportate solo nelle versioni successive.

JOIN operazioni

  • Il trasferimento delle trasformazioni è disponibile per le operazioni JOIN in Cloud Data Fusion 6.5.0 e versioni successive.

  • Sono supportate le operazioni JOIN di base (on-key) e avanzate.

  • Le unioni devono avere esattamente due fasi di input per l'esecuzione in BigQuery.

  • Le unioni configurate per caricare uno o più input in memoria vengono eseguite in Spark anziché in BigQuery, tranne nei seguenti casi:

    • Se uno degli input dell'unione è già stato spostato verso il basso.
    • Se hai configurato l'unione per l'esecuzione in SQL Engine (vedi l'opzione Fasi per forzare l'esecuzione).

Sink BigQuery

Il pushdown delle trasformazioni è disponibile per l'emissario BigQuery in Cloud Data Fusion versione 6.7.0 e successive.

Quando l'eseguione di 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 disporre di quanto segue:

  • L'account di servizio deve avere l'autorizzazione per creare e aggiornare le tabelle nel set di dati utilizzato dall'esegui operazione in BigQuery.
  • I set di dati utilizzati per la trasformazione pushdown e il sink BigQuery devono essere archiviati nella stessa posizione.
  • L'operazione deve essere una delle seguenti:
    • Insert (l'opzione Truncate Table non è supportata)
    • Update
    • Upsert

GROUP BY aggregazioni

La trasformazione Pushdown è disponibile per le aggregazioni GROUP BY in Cloud Data Fusion 6.7.0 e versioni 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.
  • L'hai configurato per l'esecuzione in SQL Engine (vedi l'opzione Fasi per forzare l'esecuzione).

Aggregazioni deduplicate

Il pushdown delle trasformazioni è disponibile per le aggregazioni deduplicati in Cloud Data Fusion versione 6.7.0 e successive per le seguenti operazioni:

  • Nessuna operazione di filtro specificata
  • ANY (un valore non nullo 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 deduplicative vengono eseguite nel motore SQL 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 l'esecuzione).

Pushdown delle origini BigQuery

Il pushdown delle origini BigQuery è disponibile nelle versioni 6.8.0 e successive di Cloud Data Fusion.

Quando un'origine BigQuery segue una fase compatibile per il pushdown 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 partizione e clustering delle tabelle vengono conservate, il che ti consente di utilizzarle per ottimizzare ulteriori operazioni, come le unioni.

Requisiti aggiuntivi

Per utilizzare il pushdown dell'origine BigQuery, devono essere soddisfatti i seguenti requisiti:

  • L'account di servizio configurato per BigQuery Pushdown delle trasformazioni 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 delle trasformazioni devono essere archiviati nella stessa posizione.

Aggregazioni delle finestre

La trasformazione Pushdown è disponibile per le aggregazioni delle finestre in Cloud Data Fusion 6.9 e versioni successive. Le aggregazioni delle 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 delle 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 pushdown).

Filtro pushdown di Wrangler

La funzionalità di trasferimento dei filtri di Wrangler è disponibile nelle versioni Cloud Data Fusion 6.9 e successive.

Quando utilizzi il plug-in Wrangler, puoi inviare i filtri, noti come Precondition operazioni, da eseguire in BigQuery anziché in Spark.

Il pushdown dei filtri è 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 la modalità SQL viene utilizzata per i prerequisiti, le Directives e le User Defined Directives sono disattivate per il plug-in Wrangler, in quanto non sono supportate con i prerequisiti in modalità SQL.

La modalità SQL per i prerequisiti non è supportata per i plug-in Wrangler con più input quando è attivata la trasformazione pushdown. Se utilizzata con più input, questa fase di 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 pushdown).

Metriche

Per ulteriori informazioni sulle metriche fornite da Cloud Data Fusion per la parte della pipeline eseguita in BigQuery, consulta Metriche della pipeline pushdown di BigQuery.

Quando utilizzare il pushdown delle trasformazioni

L'esecuzione delle trasformazioni in BigQuery prevede quanto segue:

  1. Scrittura di record in BigQuery per le fasi supportate nella pipeline.
  2. Esecuzione delle fasi supportate in BigQuery.
  3. Lettura dei record da BigQuery dopo l'esecuzione delle trasformazioni supportate, a meno che non siano seguite da un destinazione BigQuery.

A seconda delle dimensioni dei set di dati, potrebbe esserci un overhead della rete considerevole, che può avere un impatto negativo sul tempo di esecuzione complessivo della pipeline quando è attivata la funzionalità di trasferimento delle trasformazioni.

A causa del sovraccarico della rete, consigliamo di utilizzare la trasformazione pushdown nei seguenti casi:

  • Più operazioni supportate vengono eseguite in sequenza (senza passaggi tra le fasi).
  • I miglioramenti delle prestazioni di BigQuery che esegue le trasformazioni, rispetto a Spark, superano la latenza del trasferimento dei dati in e possibilmente fuori da BigQuery.

Come funziona

Quando esegui una pipeline che utilizza il pushdown delle trasformazioni, 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:

  1. Cloud Data Fusion carica i set di dati di input in BigQuery scrivendo i record in Cloud Storage e poi eseguendo un job di caricamento BigQuery.

  2. Le operazioni JOIN e le trasformazioni supportate vengono poi eseguite come job BigQuery utilizzando istruzioni SQL.

  3. Se è necessaria un'ulteriore elaborazione dopo l'esecuzione dei job, i record possono essere esportati da BigQuery in Spark. Tuttavia, se l'opzione Cerca di eseguire una copia diretta negli sink BigQuery è attivata e lo sink BigQuery segue una fase eseguita in BigQuery, i record vengono scritti direttamente nella tabella dello sink BigQuery di destinazione.

Il seguente diagramma mostra come il pushdown delle trasformazioni esegue le trasformazioni supportate in BigQuery anziché in Spark.

Pushdown delle trasformazioni in BigQuery nelle pipeline Cloud Data Fusion.

Best practice

Regolare le dimensioni di cluster ed esecutori

Per ottimizzare la gestione delle risorse nella pipeline:

  • Utilizza il numero corretto di worker (nodi) del cluster per un workload. In altre parole, sfrutta al meglio il cluster Dataproc di cui è stato eseguito il provisioning utilizzando al meglio la CPU e la memoria disponibili per l'istanza, beneficiando al contempo della velocità di esecuzione di BigQuery per i job di grandi dimensioni.

  • Migliora il parallelismo nelle pipeline utilizzando cluster con scalabilità automatica.

  • Modifica le configurazioni delle risorse nelle fasi della pipeline in cui i record vengono inviati o estratti da BigQuery durante l'esecuzione della pipeline.

Consigliato: prova ad aumentare il numero di core della CPU per le risorse dell'executor (fino al numero di core della CPU utilizzati dal tuo nodo worker). Gli esecutori ottimizzano l'utilizzo della CPU durante le fasi di serializzazione e deserializzazione quando i dati entrano e escono da BigQuery. Per ulteriori informazioni, consulta la sezione Dimensionamento del cluster.

Un vantaggio dell'esecuzione delle trasformazioni in BigQuery è che le tue pipeline possono essere eseguite su cluster Dataproc più piccoli. Se le unioni sono le operazioni più dispendiose in termini di risorse nella pipeline, puoi fare esperimenti con dimensioni dei cluster più piccole, poiché le operazioni JOIN pesanti ora vengono eseguite in BigQuery, il che ti consente di ridurre potenzialmente i costi complessivi di calcolo.

Recuperare i dati più velocemente con l'API BigQuery Storage Read

Dopo che BigQuery ha eseguito le trasformazioni, la pipeline potrebbe avere fasi aggiuntive da eseguire in Spark. In Cloud Data Fusion versione 6.7.0 e successive, il pushdown delle trasformazioni supporta l'API BigQuery Storage Read, che migliora la latenza e consente di eseguire operazioni di lettura più rapide in Spark. Può ridurre il tempo di esecuzione complessivo della pipeline.

L'API legge i record in parallelo, pertanto ti consigliamo di regolare le dimensioni degli executor di conseguenza. Se in BigQuery vengono eseguite operazioni che richiedono molte risorse, riduci l'allocazione della memoria per gli esecutori per migliorare il parallelismo durante l'esecuzione della pipeline (vedi Modificare le dimensioni del cluster e degli esecutori).

L'API BigQuery Storage Read è disabilitata per impostazione predefinita. Puoi attivarlo negli ambienti di esecuzione in cui è installato Scala 2.12 (inclusi Dataproc 2.0 e Dataproc 1.5).

Considera le dimensioni del set di dati

Tieni conto delle dimensioni dei set di dati nelle operazioni JOIN. Per le operazioni JOIN che generano un numero significativo di record di output, ad esempio qualcosa che assomiglia a un'operazione JOIN incrociata, le dimensioni del set di dati risultante potrebbero essere ordini di grandezza superiori a quelle del set di dati di input. Inoltre, tieni conto dell'overhead di inserimento di questi record in Spark quando si verifica un'ulteriore elaborazione di Spark per questi record, ad esempio una trasformazione o un sink, nel contesto del rendimento complessivo della pipeline.

Mitigare i dati distorti

Le operazioni JOIN per dati fortemente distorti potrebbero causare il superamento dei limiti di utilizzo delle risorse da parte del job BigQuery, provocando il fallimento dell'operazione JOIN. Per evitare questo problema, vai alle impostazioni del plug-in Joiner e identifica l'input non uniforme nel campo Fase di input non uniforme. In questo modo, Cloud Data Fusion organizza gli input in modo da ridurre il rischio che l'istruzione BigQuery superi i limiti.

Nelle impostazioni del plug-in Joiner, identifica i dati distorti nel campo Fase di input distorta.

Passaggi successivi