Pular para o conteúdo principal

O que é o Photon?

Photon é o mecanismo de consulta vetorizada nativo Databricksque acelera suas cargas de trabalho SQL , chamadas API DataFrame , pipeline ETL e cargas de trabalho de transmissão sem estado. O Photon processa dados em lotes colunares, proporcionando melhorias de desempenho significativas em comparação com a execução tradicional baseada em linhas. O Photon também é compatível com as APIs do Apache Spark, portanto, funciona com seu código existente sem necessidade de alterações.

Como funciona o Photon

Para as operações suportadas, o Photon substitui o mecanismo de execução Spark SQL baseado em JVM por um ambiente de execução C++ nativo. O otimizador de consultas do Apache Spark (Catalyst) ainda planeja sua consulta, mas o Photon assume o controle na camada de execução, processando os dados em lotes colunares em vez de linha por linha. Quando Photon encontra uma operação não suportada durante a execução de uma consulta, ele recorre automaticamente ao ambiente de execução Spark para concluir o restante da operação.

O Photon processa dados em lotes de milhares de linhas por vez, permitindo que as CPUs modernas usem instruções SIMD que avaliam vários valores por ciclo de CPU. Ao executar em C++ nativo em vez da JVM, Photon elimina a pausa da coleta de lixo, os atrasos de inicialização do JIT e a sobrecarga de memória. O processamento de lotes colunares permite leituras sequenciais otimizadas para o cache, o que maximiza a largura de banda da memória e a eficiência pipeline da CPU.

A arquitetura do Photon melhora o desempenho de diversas maneiras:

  • Aceleração de consultas : Photon oferece uma relação custo-benefício até 5 vezes melhor para cargas de trabalho de dados e análises em comparação com outros data warehouses cloud , conforme medido pelos benchmarks TPC-DS, padrão do setor.
  • Junções e embaralhamentos otimizados : Substitui a junçãomerge ordenação e mesclagem por uma junção hash de alto desempenho e usa um embaralhamento colunar redesenhado para aumentar a taxa de transferência para junções de grande escala.
  • Desempenho de escrita : O gravador Parquet nativo Photon acelera as escritas Delta Lake, Apache Iceberg e Parquet , incluindo operações UPDATE, DELETE, MERGE INTO, INSERT e CREATE TABLE AS SELECT . Tabelas extensas com milhares de colunas apresentam melhorias especialmente significativas.
  • Eficiência de varredura : Implementa o pushdown de filtros, a poda de dicionário e o pulo de grupos de linhas para reduzir a quantidade de dados lidos do armazenamento, mesmo ao lidar com muitos arquivos pequenos.
  • Cache de disco e concorrência : Proporciona acesso repetido mais rápido através do cache de disco e melhora a taxa de transferência para consultas concorrentes em cargas de trabalho BI interativas.
  • Integração com API SQL e DataFrames : Suporta APIs SQL e DataFrame em Python, R, Scala e Java sem necessidade de alterações no código.

Photon oferece o maior benefício para consultas de longa duração que processam grandes conjuntos de dados. Consultas que normalmente são concluídas em menos de dois segundos não apresentam melhorias significativas porque o tempo de execução é dominado pelo planejamento e pela sobrecarga de programação, em vez do processamento de dados.

Integração com a plataforma Databricks

O Photon acelera as cargas de trabalho em toda a plataforma Databricks. Você não precisa alterar seu código ou suas consultas para aproveitar as vantagens do Photon.

  • AnáliseSQL e BI : Photon é o mecanismo default para todo SQL Warehouse, fornecendo suporte para painéis, consultas ad hoc e relatórios agendados.
  • ETL e engenharia de dados : o trabalho em lote construído com SQL ou a API DataFrame se beneficia de varreduras, junções, agregações e gravações mais rápidas. O gravador Parquet nativo é particularmente eficaz para ingestão em tabelas Delta Lake, Apache Iceberg ou Parquet.
  • Pipeline declarativoLakeFlow Spark : Habilitar Photon na configuração do seu pipeline ajuda a acelerar a execução do pipeline declarativo doLakeFlow Spark .
  • transmissão : Photon suporta transmissão sem estado ao gravar em um coletor Delta ou Parquet . As fontes suportadas incluem Delta, Parquet, CSV, JSON, Kafka e Kinesis. Transmissão com estado não é suportada.
  • AI e machine learning : Photon melhora desempenho de operações Spark SQL, DataFrames, engenharia de recursos e operações GraphFrames .

Photon capacitação

Photon está sempre habilitado em compute serverless , data warehouse SQL e pipeline declarativo Spark LakeFlow serverless .

Para compute clássica de uso geral, compute de tarefas e pipelines clássicos LakeFlow Spark Declarative, Photon está habilitado por default e pode ser ativado/desativado com a caixa de seleção " Usar aceleração Photon em "Desempenho" ao criar ou editar compute. Veja Usar aceleração Photon. Se você criar esses recursos usando a APIde clusters ou APIde Jobs, você deve habilitar explicitamente Photon definindo runtime_engine para PHOTON. Se você usar a APIde pipeline, defina photon para true.

recurso que requer habilitação Photon

Os seguintes recursos exigem a ativação Photon :

Tipos de instância compatíveis

Photon é compatível com vários tipos de instância nos nós driver e worker. Os tipos de instância do Photon consomem DBUs em uma taxa diferente da do mesmo tipo de instância que executa o tempo de execução não-Photon.

Para obter mais informações sobre as instâncias do Photon e o consumo do DBU, consulte a páginaDatabricks preços.

Operadores, expressões e tipos de dados compatíveis

O Photon abrange os seguintes operadores, expressões e tipos de dados. Quando uma consulta utiliza uma operação não suportada, Photon recorre automaticamente ao ambiente de execução Spark para essa parte da execução.

Operadores

  • Digitalizar (Parquet, Delta, CSV, JSON), Filtrar, Projeto
  • Hash Aggregate/join/Shuffle
  • Junção de loop aninhado
  • Null-Aware Anti join
  • Junção espacial (variantes broadcast e shuffled suportando ST_Intersects, ST_Contains, ST_Covers, ST_Equals, ST_Touches, ST_Within e ST_DWithin)
  • União, expansão, subconsulta escalar
  • Delta/Parquet Write Sink
  • Ordenar, TopK, Limitar
  • Função de janela

Expressões

Essas categorias são representativas, não exaustivas. As funções individuais dentro de cada categoria podem ter limitações.

  • Comparação/Lógica
  • Aritmética / Matemática
  • Condicional (IF, CASE, etc.)
  • String
  • Emolda
  • Agregados, incluindo Min/Max/MinBy/MaxBy em tipos aninhados
  • Data/Hora/Formato de Data

Tipos de dados

  • Byte/Curto/Inteiro/Longo
  • Booleana
  • strings/Binário
  • Decimal
  • Flutuador/Duplo
  • Carimbo de data/hora
  • TimestampNTZ
  • struct
  • matriz
  • Mapa
  • Variante
  • null
  • Geometria
  • Geografia
  • Cadeias compiladas

Monitorar o uso do Photon

Você pode monitorar a quantidade de execução de suas consultas no Photon usando as seguintes ferramentas:

  • Spark UI ( compute clássica de uso geral e de tarefas): Na tab SQL/DataFrame da Spark UI, os operadores Photon aparecem em laranja na visualização do DAG da consulta. Os operadores padrão do Spark aparecem em azul. Isso ajuda você a identificar quais partes da sua consulta se beneficiam do Photon e quais recorrem ao ambiente de execução do Spark.
  • Perfil de consulta (SQL warehouse e compute serverless ): A view Detalhes da execução mostra a porcentagem de tempo da tarefa gasto no Photon. O plano de consulta distingue os operadores Photon (roxos) dos operadores padrão (cinza).

Se você perceber que uma consulta não está usando Photon como esperado, verifique se a consulta usa operações, UDFs ou formatos de dados não suportados que causam o uso do runtime Spark fallback .

Limitações

  • Se a sua carga de trabalho atingir uma operação não suportada, o recurso compute alterna automaticamente para o ambiente de execução Spark para o restante dessa operação. Sua consulta ainda produz resultados corretos.
  • Photon não oferece suporte a UDFs (Funções Definidas pelo Usuário), APIs RDD ou APIs de conjunto de dados.
  • Transmissão com estado não é suportada. Photon suporta apenas transmissões sem estado.
  • Photon não melhora consultas que normalmente são executadas em menos de dois segundos.