Visão geral do pushdown de transformação

Para melhorar o desempenho dos seus pipelines de dados, envie algumas operações de transformação para o BigQuery em vez do Apache Spark. O pushdown de transformação é uma configuração que permite enviar uma operação em um pipeline de dados do Cloud Data Fusion ao BigQuery como um mecanismo de execução. Como resultado, a operação e os dados dela são transferidos para o BigQuery, e a operação é realizada lá.

O pushdown de transformação melhora o desempenho de pipelines que têm várias operações JOIN complexas ou outras transformações com suporte. A execução de algumas transformações no BigQuery pode ser mais rápida do que no Spark.

Transformações sem suporte 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 na versão 6.5.0 e mais recentes do Cloud Data Fusion, mas algumas das transformações a seguir só têm suporte em versões mais recentes.

JOIN operações

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

  • Há suporte para as operações JOIN básicas (em chaves) e avançadas.

  • 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 casos a seguir:

    • Se alguma das entradas para a junção já tiver sido empurrada para baixo.
    • Se você configurou a mesclagem para 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 posteriores.

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, você precisa do 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 para o pushdown de transformação e o 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 GROUP BY no Cloud Data Fusion versão 6.7.0 e mais recentes.

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

  • Avg
  • Collect List (valores nulos são removidos da matriz de saída)
  • Collect Set (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 GROUP BY são executadas no BigQuery nos seguintes casos:

Elimine a duplicação de agregações

O Pushdown de transformação está disponível para agregações de eliminação de duplicação na versão 6.7.0 e mais recentes do Cloud Data Fusion 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 do campo especificado)
  • MAX (o valor máximo do campo especificado)

Não há suporte para as seguintes operações:

  • FIRST
  • LAST

Agregações de eliminação de duplicação são executadas no mecanismo SQL nos seguintes casos:

Pushdown de origem do BigQuery

O Pushdown de origem do BigQuery está disponível nas versões 6.8.0 e mais recentes do Cloud Data Fusion.

Quando uma origem do BigQuery segue um estágio compatível com o push-down do BigQuery, o pipeline pode executar todos os estágios compatíveis no BigQuery.

O Cloud Data Fusion copia os registros necessários para executar o pipeline no BigQuery.

Quando você usa o pushdown de origem do BigQuery, as propriedades de particionamento e clustering de tabelas são preservadas, o que permite usar essas propriedades para otimizar outras operações, como mesclagens.

Outros requisitos

Para usar o pushdown de origem do BigQuery, os seguintes requisitos precisam estar em vigor:

  • A conta de serviço configurada para o pushdown de transformação do BigQuery precisa ter permissões para ler tabelas no conjunto de dados de origem do BigQuery.

  • Os conjuntos de dados usados na origem do BigQuery e o conjunto configurado para o Pushdown de transformação precisam ser armazenados no mesmo local.

Agregações de janelas

O Pushdown de transformação está disponível para agregações de janela nas versões 6.9 e mais recentes do Cloud Data Fusion. As agregações de janelas no BigQuery são compatíveis com as seguintes operações:

  • Rank
  • Dense Rank
  • Percent Rank
  • N tile
  • Row Number
  • Median
  • Continuous Percentile
  • Lead
  • Lag
  • First
  • Last
  • Cumulative distribution
  • Accumulate

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

Pushdown do filtro do Wrangler

O Pushdown de filtro do Wrangler está disponível nas versões 6.9 e mais recentes do Cloud Data Fusion.

Ao usar o plug-in do Wrangler, é possível enviar filtros, conhecidos como operações Precondition, para serem executados no BigQuery em vez do Spark.

O Pushdown de filtro só é compatível com o modo SQL para Pré-condições, que também foi lançado na versão 6.9. Nesse modo, o plug-in aceita uma expressão de pré-condição no SQL padrão ANSI.

Se o modo SQL for usado para condições prévias, Diretivas e Diretivas definidas pelo usuário serão desativadas para o plug-in do Administrador, porque elas não são compatíveis com condições prévias no modo SQL.

O modo SQL para condições prévias não é compatível com plug-ins do Wrangler com várias entradas quando o pushdown de transformação está ativado. Se usado com várias entradas, esse estágio do Wrangler com condições de filtro SQL é executado no Spark.

Os filtros são executados no BigQuery nos seguintes casos:

Métricas

Para mais informações sobre as métricas que o Cloud Data Fusion fornece para a parte do pipeline executada no BigQuery, consulte Métricas de pipeline de push-down do BigQuery.

Quando usar o Pushdown de transformação

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

  1. Gravar registros no BigQuery para estágios compatíveis no pipeline.
  2. Como executar estágios suportados no BigQuery.
  3. Leitura de registros do BigQuery após a execução das transformações compatíveis, a menos que sejam seguidas por um coletor do BigQuery.

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

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

  • Várias operações aceitas são executadas em sequência (sem etapas entre elas).
  • Os ganhos de desempenho com o BigQuery que executa as transformações, em relação ao Spark, superam a latência do movimento de dados para dentro e, possivelmente, para 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. Todas as outras fases no pipeline são executadas 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. As operações JOIN e as transformações compatíveis são executadas como jobs do BigQuery usando instruções SQL.

  3. Se for necessário um processamento mais aprofundado após a execução dos jobs, os registros poderão ser exportados do BigQuery para o Spark. No entanto, se a opção Tentativa de 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 coletor do BigQuery de destino.

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

Pushdown de transformação para 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 (nós) do cluster 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 sua instância, além de aproveitar 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 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 do executor, 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 do cluster.

Um benefício de executar transformações no BigQuery é que os pipelines podem ser executados em clusters menores do Dataproc. Se as mesclagens forem as operações que mais consomem recursos no pipeline, teste tamanhos de cluster menores, já que as operações JOIN pesadas agora são realizadas no BigQuery. Isso permite reduzir potencialmente 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 mais estágios para executar no Spark. Na versão 6.7.0 e mais recentes do Cloud Data Fusion, o Pushdown de transformação é compatível com a API BigQuery Storage Read, o que melhora a latência e resulta em operações de leitura mais rápidas no Spark. Isso pode reduzir o tempo total de execução do pipeline.

A API lê registros em paralelo. Portanto, recomendamos ajustar os tamanhos do executor de forma adequada. Se operações com 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 cluster e executor.

A API BigQuery Storage Read está 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 maior do que o conjunto de dados de entrada. Além disso, considere a sobrecarga desses registros de volta para o Spark quando ocorrer um processamento extra para esses registros, como uma transformação ou um coletor, no contexto do desempenho geral do pipeline.

Reduzir dados distorcidos

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

Nas configurações do plug-in do Joiner, identifique os dados distorcidos no campo "Estágio de entrada distorcida".

A seguir