Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Photon é o motor nativo de consultas vetorizadas do Azure Databricks que acelera as suas cargas de trabalho SQL, chamadas à API DataFrame, pipelines ETL e cargas de trabalho de streaming sem estado. A Photon processa dados em lotes colunares, proporcionando melhorias significativas de desempenho em relação à execução tradicional baseada em linhas. O Photon também é compatível com as APIs do Apache Spark, por isso funciona com o teu código existente sem necessidade de alterações.
Como funciona o Photon
Para operações suportadas, o Photon substitui o motor de execução Spark SQL baseado em JVM por um runtime nativo C++. O otimizador de consultas Apache Spark (Catalyst) continua a planear a sua consulta, mas o Photon assume a camada de execução, processando os dados em lotes colunares em vez de linha a linha. Quando o Photon encontra uma operação não suportada durante a execução da consulta, ele recua transparentemente para o runtime do Spark durante o restante período dessa operação.
O Photon processa dados em lotes de milhares de linhas de cada vez, permitindo que CPUs modernas utilizem instruções SIMD que avaliam múltiplos valores por ciclo de CPU. Ao executar em C++ nativo em vez da JVM, o Photon elimina pausas de recolha de lixo, atrasos no aquecimento do JIT e sobrecarga de memória. O processamento em lote em colunas permite leituras sequenciais amigas da cache, o que maximiza a largura de banda da memória e a eficiência do pipeline da CPU.
A arquitetura da Photon melhora o desempenho de várias formas:
- Aceleração de consultas: A Photon oferece até 5 vezes melhor preço/desempenho para cargas de trabalho de dados e análises em comparação com outros armazéns de dados na cloud, conforme medido por benchmarks de TPC-DS padrão da indústria.
- Junções e redistribuições otimizadas: Substitui as junções de ordenação e intercalação por junções hash de alto desempenho e utiliza uma redistribuição colunar redesenhada para aumentar a taxa de transferência em junções em grande escala.
-
Desempenho de escrita: O gravador Parquet nativo do Photon acelera as operações de escrita no Delta Lake, no Apache Iceberg e em Parquet, incluindo
UPDATE,DELETE,MERGE INTO,INSERTeCREATE TABLE AS SELECT. Tabelas largas com milhares de colunas apresentam melhorias especialmente significativas. - Eficiência de varrimento: Implementa pushdown de filtros, poda de dicionário e salto de grupos de linhas para reduzir dados lidos do armazenamento, mesmo ao lidar com muitos ficheiros pequenos.
- Cache de disco e concorrência: Proporciona acesso mais rápido a repetições através da cache de disco e melhora a taxa de transferência para consultas concorrentes em cargas de trabalho interativas de BI.
- Integração com SQL e APIs de Dataframes: Suporta APIs SQL e DataFrame em Python, R, Scala e Java sem necessidade de alterações de código.
O Photon oferece o maior benefício para consultas de maior 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 pela sobrecarga de planeamento e agendamento em vez do processamento de dados.
Integração com a plataforma Azure Databricks
O Photon acelera cargas de trabalho em toda a plataforma Azure Databricks. Não precisas de alterar o teu código ou consultas para tirar partido do Photon.
- Análise SQL e BI: O Photon é o motor predefinido para todos os warehouses SQL, alimentando dashboards, consultas ad hoc e relatórios agendados.
- ETL e engenharia de dados: Os trabalhos em lote construídos com SQL ou a API DataFrame beneficiam de scans, joins, agregações e escritas mais rápidas. O gravador Parquet nativo é particularmente eficaz para ingestão em tabelas Delta Lake, Apache Iceberg ou Parquet.
- Lakeflow Spark Declarative Pipelines: Ativar o Photon na configuração do seu pipeline ajuda a acelerar a execução de Lakeflow Spark Declarative Pipelines.
- Streaming: O Photon suporta streaming stateless ao escrever para um atenuador Delta ou Parquet. As fontes suportadas incluem Delta, Parquet, CSV, JSON, Kafka e Kinesis. Streaming com estado não é suportado.
- IA e aprendizagem automática: A Photon melhora o desempenho para operações Spark SQL, DataFrames, engenharia de funcionalidades e GraphFrames.
Ativação de fótons
O Photon está sempre ativado na computação sem servidor, nos armazéns de SQL e nos pipelines sem servidor do Lakeflow Spark Declarative Pipelines.
Para a computação clássica de uso geral, a computação para jobs e os pipelines clássicos do Lakeflow Spark Declarative Pipelines, o Photon está ativado por defeito e pode ser ativado ou desativado com a caixa de seleção Use Photon Acceleration na secção Performance, ao criar ou editar a computação. Ver Usar aceleração de fotões. Se criar estes recursos usando a API Clusters ou Jobs API, deve ativar explicitamente o Photon definindo runtime_engine para PHOTON. Se usar a API Pipelines, defina photon para true.
Funcionalidades que requerem ativação de fotões
As seguintes funcionalidades requerem a ativação do Photon:
- Entrada/Saída preditiva para leitura e gravação. Consulte O que é E/S preditiva?.
- Remoção dinâmica de ficheiros nas instruções
MERGE,UPDATEeDELETE. Consulte Remoção dinâmica de ficheiros.
Tipos de instância suportados
O Photon suporta vários tipos de instâncias nos nós de condução e de trabalho. Os tipos de instância do Photon consomem DBUs a uma taxa diferente comparado ao mesmo tipo de instância quando executam o runtime não Photon. Para mais informações sobre instâncias Photon e consumo de DBUs, consulte a página de preços Azure Databricks.
Operadores, expressões e tipos de dados suportados
O fotão cobre os seguintes operadores, expressões e tipos de dados. Quando uma consulta utiliza uma operação não suportada, o Photon recua transparentemente para o runtime do Spark nessa parte da execução.
Operadores
- Scan (Parquet, Delta, CSV, JSON), Filter, Project
- Agregação de Hash/União/Embaralhamento
- Nested-Loop Junte-se
- Null-Aware Anti Junção
- Junção Espacial (variantes broadcast e aleatórias que suportam
ST_Intersects,ST_Contains,ST_Covers,ST_Equals,ST_Touches,ST_Within, eST_DWithin) - União, Expandir, ScalarSubquery
- Pia de gravação Delta/Parquet
- Ordenar, TopK, Limitar
- Função Janela
Expressões
Estas categorias são representativas, não exaustivas. Funções individuais dentro de cada categoria podem ter limitações.
- Comparação / Lógica
- Aritmética / Matemática
- Condicional (IF, CASE, etc.)
- String
- Conversões de Tipos
- Agregados, incluindo Min/Max/MinBy/MaxBy em tipos aninhados
- Data/Marca temporal/Formato de data
Tipos de dados
- Byte/Short/Int/Long
- booleano
- String/binário
- Decimal
- Flutuador/Duplo
- Carimbo de data/hora
- TimestampNTZ
- Estrutura
- Matriz
- Mapa
- Variante
- Null
- Geometria
- Geografia
- Corda colada
Monitorize a utilização do Photon
Pode monitorizar quanto da sua consulta é executada no Photon usando as seguintes ferramentas:
- Spark UI (clássico de uso geral e computação de tarefas): No separador SQL/DataFrame da Spark UI, os operadores Photon aparecem a laranja na visualização DAG da consulta. Os operadores padrão do Spark aparecem em azul. Isto ajuda-o a identificar que partes da sua consulta beneficiam do Photon e quais recorrem ao ambiente de execução do Spark.
- Perfil da consulta (armazéns SQL e computação sem servidor): A vista Detalhes de execução mostra a percentagem do tempo da tarefa despendido no Photon. O plano de consulta distingue os operadores Photon (roxos) dos operadores padrão (cinzentos).
Se notar que uma consulta não está a usar o Photon como esperado, verifique se a consulta utiliza operações não suportadas, UDFs ou formatos de dados que provoquem o recurso ao runtime do Spark.
Limitações
- Se a sua carga de trabalho atingir uma operação não suportada, o recurso de computação muda de forma transparente para o runtime do Spark durante o restante período dessa operação. A sua consulta continua a produzir resultados corretos.
- O Photon não suporta UDFs (Funções Definidas pelo Utilizador), APIs RDD ou APIs de Conjuntos de Dados.
- Streaming com estado não é suportado. O Photon suporta apenas streaming sem estado.
- O Photon não melhora consultas que normalmente correm em menos de dois segundos.