Visão geral do Pushdown para transformação

O Pushdown de transformação melhora o desempenho de pipelines que têm várias operações JOIN complexas ou outras transformações compatíveis. Quando você ativa o pushdown, o Cloud Data Fusion executa as transformações compatíveis no BigQuery, o que é mais rápido do que executá-las no Apache Spark.

Transformações não compatíveis e todas as transformações de visualização são executadas no Spark.

Transformações compatíveis

O Pushdown de transformação está disponível no Cloud Data Fusion versão 6.5.0 e posteriores, mas algumas das transformações a seguir são compatíveis apenas com versões posteriores.

Operações JOIN

  • O Pushdown de transformação está disponível para operações JOIN no Cloud Data Fusion versão 6.5.0 e posterior.

  • As operações básicas (nas chaves) e avançadas JOIN são compatíveis.

  • As junções precisam ter exatamente dois estágios de entrada para que a execução ocorra no BigQuery.

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

    • Se alguma das entradas para a junção já foi pressionada.
    • Se você configurou a mesclagem a ser executada no SQL Engine, consulte a opção Estágios para forçar a execução.

Coletor do BigQuery

O Pushdown de transformação está disponível para o coletor do BigQuery no Cloud Data Fusion versão 6.7.0 e posterior.

Quando o coletor do BigQuery segue um estágio que foi executado no BigQuery, a operação que grava registros no BigQuery é realizada diretamente no BigQuery.

Para melhorar o desempenho com esse coletor, é necessário fazer o seguinte:

  • A conta de serviço precisa ter permissão para criar e atualizar tabelas no conjunto de dados usado pelo coletor do BigQuery.
  • Os conjuntos de dados usados no Pushdown de transformação e no coletor do BigQuery precisam ser armazenados no mesmo local.
  • A operação precisa ser uma das seguintes:
    • Insert (a opção Truncate Table não é compatível)
    • Update
    • Upsert

GROUP BY agregações

O Pushdown de transformação está disponível para agregações de GROUP BY no Cloud Data Fusion versão 6.7.0 e posterior.

As agregações de GROUP BY no BigQuery estão disponíveis para as seguintes operações:

  • Avg
  • Collect List (os valores nulos são removidos da matriz de saída)
  • Collect Set (os valores nulos são removidos da matriz de saída)
  • 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

As agregações de GROUP BY são executadas no BigQuery nos seguintes casos:

  • Ele segue um estágio que já foi empurrado para baixo.
  • você a configurou para ser executada no SQL Engine. Consulte a opção Etapas para forçar a execução.

Remover duplicações

O Pushdown de transformação está disponível para agregações duplicadas no Cloud Data Fusion versão 6.7.0 e posterior para as seguintes operações:

  • Nenhuma operação de filtro foi especificada
  • ANY (um valor não nulo para o campo desejado)
  • MIN (o valor mínimo para o campo especificado)
  • MAX (o valor máximo para o campo especificado)

As seguintes operações não são compatíveis:

  • FIRST
  • LAST

As agregações sem duplicação são executadas no mecanismo SQL nos seguintes casos:

  • Ele segue um estágio que já foi empurrado para baixo.
  • Você a configurou para ser executada no SQL Engine. Consulte a opção Etapas para forçar a execução.

Quando usar o Pushdown de transformação

A execução de transformações no BigQuery envolve o seguinte:

  1. a gravação de registros no BigQuery para estágios compatíveis no pipeline;
  2. Executar estágios compatíveis no BigQuery.
  3. A leitura de registros do BigQuery após as transformações compatíveis é executada, a menos que sejam seguidas por um coletor do BigQuery.

Dependendo do tamanho dos seus conjuntos de dados, pode haver uma sobrecarga de rede considerável, o que pode ter um impacto negativo no tempo de execução geral do pipeline quando o Pushdown da transformação está ativado.

Devido à sobrecarga de rede, recomendamos o Pushdown da transformação nos seguintes casos:

  • Várias operações compatíveis são executadas em sequência, sem etapas entre os estágios.
  • Os ganhos de desempenho do BigQuery ao executar as transformações, em relação ao Spark, superam a latência do movimento de dados para e, possivelmente, fora do BigQuery.

Como funciona

Quando você executa um pipeline que usa o Pushdown de transformação, o Cloud Data Fusion executa estágios de transformação compatíveis no BigQuery. Todos os outros estágios no pipeline são executados no Spark.

Ao executar transformações:

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

  2. Em seguida, as operações JOIN e as transformações compatíveis são executadas como jobs do BigQuery usando instruções SQL.

  3. Se mais processamento for necessário após a execução dos jobs, os registros poderão ser exportados do BigQuery para o Spark. No entanto, se a opção Tentar copiar diretamente para os coletores do BigQuery estiver ativada e o coletor do BigQuery seguir um estágio que foi executado no BigQuery, os registros serão gravados diretamente na tabela de destino do BigQuery Sink.

O diagrama a seguir mostra como o Pushdown de transformação executa transformações compatíveis no BigQuery em vez do Spark.

Pushdown para transformação do BigQuery nos pipelines do Cloud Data Fusion.

Práticas recomendadas

Ajustar os tamanhos do cluster e do executor

Para otimizar o gerenciamento de recursos no pipeline, faça o seguinte:

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

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

  • Ajuste as configurações dos 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 seus recursos de execução (até o número de núcleos de CPU que o nó de trabalho usa). Os executores otimizam o uso da CPU durante as etapas de serialização e desserialização à medida que os dados entram e saem do BigQuery. Para mais informações, consulte Dimensionamento de cluster.

Uma vantagem de executar transformações no BigQuery é que os pipelines podem ser executados em clusters menores do Dataproc. Se as mesclagens forem as operações mais intensivas do pipeline, faça experimentos com clusters menores, já que as operações pesadas JOIN são realizadas no BigQuery. Isso permite reduzir os custos gerais de computação.

Recupere dados mais rapidamente com a API BigQuery Storage Read

Depois que o BigQuery executa as transformações, o pipeline pode ter estágios adicionais para execução no Spark. No Cloud Data Fusion versão 6.7.0 e posteriores, o Pushdown de transformação é compatível com a API BigQuery Storage Read, que melhora a latência e resulta em operações de leitura mais rápidas para o Spark. Ele pode reduzir o tempo total de execução do pipeline.

A API lê os registros em paralelo. Portanto, recomendamos ajustar os tamanhos dos executores de acordo. Se operações que exigem muitos recursos forem executadas no BigQuery, reduza a alocação de memória dos executores para melhorar o paralelismo quando o pipeline for executado (consulte Ajustar tamanhos de clusters e executores).

A API BigQuery Storage Read fica desativada por padrão. É possível ativá-lo em ambientes de execução em que o Scala 2.12 está instalado (incluindo o Dataproc 2.0 e o Dataproc 1.5).

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 substancial de registros de saída, como algo que se assemelha a uma operação JOIN cruzada, o tamanho do conjunto de dados resultante pode ser ordens de magnitude maiores que o conjunto de dados de entrada. Além disso, considere a sobrecarga de retirar esses registros de volta para o Spark quando ocorre o processamento extra do Spark para esses registros, como uma transformação ou um coletor, no contexto do desempenho geral do pipeline.

Minimizar dados distorcidos

As operações JOIN para dados altamente distorcidos podem fazer com que o job do BigQuery exceda os limites de utilização de recursos, o que causa uma falha na operação JOIN. Para evitar isso, acesse as configurações do plug-in do Combinador e identifique a entrada distorcida no campo Stage de entrada desencadeado. Isso permite que o Cloud Data Fusion organize as entradas de maneira que reduza o risco de a instrução do BigQuery exceder os limites.

Nas configurações do plug-in do Combinador, identifique dados distorcidos no campo "Skewed Input Stage".

A seguir