Visão geral do pushdown de transformação

Projete e execute com eficiência cargas de trabalho de ELT enviando as transformações de junção para o BigQuery. Quando você ativa o pushdown de transformação, o Cloud Data Fusion executa operações do JOIN no BigQuery em vez do Apache Spark. Todas as outras transformações são executadas usando o Spark. Para pipelines que realizam várias junções complexas, o BigQuery pode executar as operações de mesclagem mais rapidamente do que o Spark.

Limitações

  • O pushdown de transformação está disponível no Cloud Data Fusion versão 6.5.0 e posterior.

  • Quando você visualiza dados no Cloud Data Fusion, todas as transformações, incluindo mesclagens, são executadas no Spark, não no BigQuery.

  • O Cloud Data Fusion é compatível apenas com operações pushdown de JOIN.

  • As junções configuradas para carregar uma ou mais entradas na memória são executadas no Spark, em vez do BigQuery.

Quando usar o pushdown de transformação

A execução de operações JOIN no BigQuery envolve um processo para gravar registros no BigQuery e ler registros do BigQuery após a conclusão da execução de junção. Dependendo do tamanho dos conjuntos de dados, pode haver uma sobrecarga considerável na rede, que pode ter um impacto negativo no tempo total de execução do pipeline quando o pushdown de transformação está ativado.

Devido a essa sobrecarga de rede, o pushdown de transformação é mais adequado para pipelines em que várias operações JOIN são executadas em sequência (sem etapas entre estágios de junção). Essa estrutura de pipeline tem o benefício de amortar o custo do tempo de E/S de envio e extração de registros para o BigQuery, beneficiando-se da velocidade de execução de junção do BigQuery em relação às junções do Spark.

Como o pushdown de transformação funciona

Quando você executa um pipeline com o pushdown de transformação ativado, o Cloud Data Fusion usa o Spark para processar cada estágio, exceto os estágios que realizam junções.

Ao executar operações JOIN:

  1. O Cloud Data Fusion carrega os conjuntos de dados de entrada no BigQuery, gravando registros no Cloud Storage e executando um job de carga do BigQuery.

  2. As operações JOIN são executadas como jobs do BigQuery usando instruções de junção do SQL.

  3. Após a execução das operações de junção, os registros serão exportados do BigQuery para processamento adicional no Spark. Para isso, basta executar um job de exportação do BigQuery e ler os registros do Cloud Storage.

O diagrama a seguir mostra como as transformações são enviadas para o BigQuery em vez do Spark quando o pushdown de transformação está ativado no Cloud Data Fusion.

Tensor de transformação do BigQuery no Cloud Data Fusion

Práticas recomendadas

Ajustar os tamanhos do cluster e do executor

Se a estrutura do pipeline consistir em transformações e junções simples, o pipeline poderá se beneficiar do paralelismo adicional ao ler e gravar registros no BigQuery.

Para otimizar o gerenciamento de recursos no pipeline:

  • Use o número "certo" de workers (nós) do cluster para uma carga de trabalho. Em outras palavras, aproveite ao máximo o cluster do Dataproc provisionado usando totalmente a CPU e a memória disponíveis para sua instância, além de aproveitar a velocidade de execução do BigQuery para grandes operações JOIN. de dados.

  • Melhore o paralelismo nos pipelines usando os clusters de escalonamento automático.

  • Ajustar as configurações de recursos nos estágios do pipeline em que os registros são enviados ou extraídos do BigQuery durante a execução do pipeline.

Recomendado: tente aumentar o número de núcleos de CPU para os recursos de executor (até o número de núcleos de CPU usados pelo nó de trabalho). Isso permite que os executores maximizem a utilização da CPU durante as etapas de serialização e desserialização necessárias para gravar dados no BigQuery e, em seguida, leiam do BigQuery quando necessário para processamento adicional. Para mais informações, consulte Dimensionamento de cluster.

Uma vantagem de enviar operações JOIN para o BigQuery é que os pipelines podem ser executados em clusters menores do Dataproc. Se os pipelines estiverem estruturados de tal modo que as junções sejam as operações com uso mais intensivo de recursos, é possível testar tamanhos de cluster menores, já que as operações JOIN pesadas agora são realizadas em BigQuery), o que permite reduzir os custos gerais de computação.

Considerar o tamanho do conjunto de dados

Considere os tamanhos dos conjuntos de dados nas operações JOIN. Para operações JOIN que geram um número significativo de registros de saída (por exemplo, algo que se assemelha a uma operação JOIN cruzada), o tamanho resultante do conjunto de dados pode ser ordens de magnitude maior que o conjunto de dados de entrada. Além disso, considere a sobrecarga de extrair esses registros de volta para o Spark quando ocorrer mais processamento do Spark para esses registros (como uma transformação ou um coletor) no contexto do desempenho geral do pipeline.

A seguir