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çãoTruncate 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:
- Ela segue uma etapa que já foi empurrada para baixo.
- Você configurou a execução no SQL Engine. Consulte a opção Estágios para forçar a execução.
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:
- Ela segue uma etapa que já foi empurrada para baixo.
- configurou a execução no SQL Engine. Consulte a opção Estágios para forçar a execução.
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:
- Ela segue uma etapa que já foi empurrada para baixo.
- Você o configurou para ser executado no SQL Engine. Consulte a opção Estágios para forçar o push-down.
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:
- Ela segue uma etapa que já foi empurrada para baixo.
- Você o configurou para ser executado no SQL Engine. Consulte a opção Estágios para forçar o push-down.
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:
- Gravar registros no BigQuery para estágios compatíveis no pipeline.
- Como executar estágios suportados no BigQuery.
- 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:
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.
As operações
JOIN
e as transformações compatíveis são executadas como jobs do BigQuery usando instruções SQL.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.
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.