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,INSERTeCREATE 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 :
- E/S preditiva para leitura e gravação. Consulte O que é E/S preditiva? .
- Remoção dinâmica de arquivos nas instruções
MERGE,UPDATEeDELETE. Consulte Poda dinâmica de arquivos.
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_WithineST_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.