Qu'est-ce que Photon ?
Photon est le moteur de requêtes vectorisé natif de Databricks qui accélère vos charges de travail SQL, les appels d'API DataFrame, les pipelines ETL et les charges de travail de streaming sans état. Photon traite les données en batches columnaires, offrant des améliorations de performance significatives par rapport à l'exécution traditionnelle basée sur les lignes. Photon est également compatible avec les APIs Apache Spark, il fonctionne donc avec votre code existant sans aucune modification requise.
Fonctionnement de Photon
Pour les Opérations prises en charge, Photon remplace le moteur d'exécution Spark SQL basé sur JVM par un runtime C++ natif. L'optimiseur de query Apache Spark (Catalyst) planifie toujours votre query, mais Photon prend le relais au niveau de la couche d'exécution, en traitant les données par batchs en colonnes plutôt que ligne par ligne. Lorsque Photon rencontre une Opération non prise en charge lors de l'exécution d'une query, il rebascule de manière transparente sur le runtime Spark pour le reste de cette Opération.
Photon traite les données par lots de milliers de lignes à la fois, permettant aux processeurs modernes d'utiliser des instructions SIMD qui évaluent plusieurs valeurs par cycle de CPU. En s'exécutant en C++ natif au lieu de la JVM, Photon élimine les pauses de récupération de mémoire, les retards de préchauffage JIT et la surcharge de mémoire. Le traitement par batch en colonnes permet des lectures séquentielles optimisées pour le cache, ce qui maximise la bande passante de la mémoire et l'efficacité du pipeline CPU.
L'architecture de Photon améliore les performances de plusieurs manières :
- Query acceleration : Photon offre un rapport prix/performances jusqu'à 5 fois supérieur pour les charges de travail de données et d'analytique par rapport aux autres data warehouse cloud, tel que mesuré par les benchmarks TPC-DS standard de l'industrie.
- Jonctions et shuffles optimisés : Remplace les jonctions de tri-Merge par des jonctions de hachage haute performance et utilise un shuffle en colonnes repensé pour augmenter le throughput des jonctions à grande échelle.
- Performances d'écriture : l'enregistreur natif Photon Parquet accélère les écritures Delta Lake, Apache Iceberg et Parquet, y compris les
UPDATE,DELETE,MERGE INTO,INSERTetCREATE TABLE AS SELECTOpérations. Les tables larges avec des milliers de colonnes bénéficient d'améliorations particulièrement significatives. - Efficacité de l'analyse : implémente la remontée des filtres, l'élagage de dictionnaire et le saut de groupe de lignes pour réduire les données lues du stockage, même lors du traitement de nombreux petits fichiers.
- Cache disque et concurrence : offre un accès répété plus rapide via le cache disque et améliore le throughput pour les requêtes concurrentes dans les workloads BI interactifs.
- Intégration avec l'API SQL et DataFrames : Prend en charge les API SQL et DataFrame pour Python, R, Scala et Java sans nécessiter de modifications du code.
Photon offre le plus grand avantage pour les requêtes à exécution plus longue qui traitent de grands datasets. Les requêtes qui s'exécutent normalement en moins de deux secondes ne montrent pas d'amélioration significative, car le temps d'exécution est dominé par les frais généraux de planification et d'ordonnancement plutôt que par le traitement des données.
Intégration avec la plateforme Databricks
Photon accélère les workloads sur l'ensemble de la plateforme Databricks. Vous n'avez pas besoin de modifier votre code ou vos requêtes pour tirer parti de Photon.
- **Analytique SQL et BI** : Photon est le moteur default pour tous les SQL warehouses, alimentant les tableaux de bord, les queries ad hoc et les rapports planifiés.
- ETL et Data Engineering : les Jobs batch créées avec SQL ou l'API DataFrame bénéficient d'analyses, de jointures, d'agrégations et d'écritures plus rapides. L'enregistreur Parquet natif est particulièrement efficace pour l'ingestion dans les tables Delta Lake, Apache Iceberg ou Parquet.
- LakeFlow Pipelines : L'activation de Photon dans la configuration de votre pipeline contribue à accélérer l'exécution des LakeFlow Pipelines.
- Streaming : Photon prend en charge le streaming sans état lors de l'écriture dans un récepteur Delta ou Parquet. Les sources prises en charge incluent Delta, Parquet, CSV, JSON, Kafka et Kinesis. Le streaming avec état n'est pas pris en charge.
- IA et Machine Learning : Photon améliore les performances pour Spark SQL, les DataFrames, l'ingénierie de fonctionnalités et les Opérations GraphFrames.
Activation de Photon
Photon est activé sur le compute Serverless, les SQL Warehouse et les Serverless LakeFlow Pipelines.
Pour les compute tout usage classiques, les compute Job et les LakeFlow Pipelines classiques, Databricks active Photon par default. Activez-le ou désactivez-le à l'aide de la case à cocher **Utiliser l'accélération Photon** sous **Performances** lors de la création ou de la modification de compute. Consultez Utiliser l'accélération de Photon. Si vous créez ces Ressources à l'aide de l'API Clusters ou de l'API Jobs, vous devez explicitement activer Photon en définissant runtime_engine sur PHOTON. Si vous utilisez l'API Pipelines, définissez photon sur true.
Fonctionnalités qui nécessitent l'activation de Photon
Les fonctionnalités suivantes nécessitent l’activation de Photon :
- E/S prédictives pour la lecture et l'écriture. Consultez Qu'est-ce que les E/S prédictives ?.
- Élagage dynamique des fichiers dans les instructions
MERGE,UPDATEetDELETE. Voir l'élagage dynamique des fichiers.
Types d'instances pris en charge
Photon prend en charge un certain nombre de types d'instances sur les nœuds du driver et du worker, y compris les instances basées sur Graviton. Les types d'instances Photon consomment des DBU à un rythme différent de celui du même type d'instance exécutant l'environnement d'exécution non-Photon. Pour plus d'informations sur les instances Photon et la consommation de DBU, consultez la page de Tarifs Databricks.
Opérateurs, expressions et types de données pris en charge
Photon couvre les opérateurs, les expressions et les types de données suivants. Lorsqu'une query utilise une opération non prise en charge, Photon revient de manière transparente à l'environnement d'exécution Spark pour cette partie de l'exécution.
Opérateurs
- Analyse (Parquet, Delta, CSV, JSON), Filtrage, Projection
- Agrégation/Jointure/Shuffle de hachage
- Jointure par boucle imbriquée
- Antijonction tenant compte des valeurs nulles
- Jointure spatiale (variantes de diffusion et mélangées prenant en charge
ST_Intersects,ST_Contains,ST_Covers,ST_Equals,ST_Touches,ST_WithinetST_DWithin) - Union, Développer, ScalarSubquery
- Récepteur d'écriture Delta/Parquet
- Trier, TopK, Limiter
- Fonction de fenêtre
Expressions
Ces catégories sont représentatives, non exhaustives. Les fonctions individuelles au sein de chaque catégorie peuvent avoir des limitations.
- Comparaison / Logique
- Arithmétique/Mathématiques
- Conditionnel (IF, CASE, etc.)
- Chaîne
- Conversions
- Agrégats, y compris Min/Max/MinPar/MaxPar sur les types imbriqués
- Date/Timestamp/Format de date
Types de données
- Byte/Short/Int/Long
- Booléen
- Chaîne/Binaire
- Décimal
- Float/Double
- Date/Timestamp
- TimestampNTZ
- Struct
- Tableau
- Carte
- Variante
- Null
- Géométrie
- Géographie
- Chaîne collationnée
Surveiller l'utilisation de Photon
Vous pouvez surveiller la proportion de votre query qui s'exécute sur Photon à l'aide des outils suivants :
- Spark UI (compute polyvalent classique et Job) : dans l'onglet SQL/DataFrame de la Spark UI, les opérateurs Photon apparaissent en orange dans la visualisation DAG de la query. Les opérateurs Spark standard apparaissent en bleu. Cela vous aide à identifier les parties de votre query qui bénéficient de Photon et celles qui reviennent à l'environnement d'exécution Spark.
- Profil de requête (SQL Warehouse et serverless compute) : la vue Détails de l'exécution affiche le pourcentage du temps de tâche passé dans Photon. Le plan de query distingue les opérateurs Photon (violet) des opérateurs standard (gris).
Si vous remarquez qu'une query n'utilise pas Photon comme prévu, vérifiez si la query utilise des opérations, des UDF ou des formats de données non pris en charge qui entraînent un fallback vers l'environnement d'exécution Spark.
Limitations
-
Si votre charge de travail rencontre une opération non prise en charge, la ressource de compute bascule de manière transparente vers le runtime Spark pour le reste de cette opération. Votre query produit toujours des résultats corrects.
-
Photon ne prend pas en charge les UDF (fonctions définies par l'utilisateur), les RDD APIs ou les APIs de dataset.
-
Le streaming avec état n'est pas pris en charge. Photon prend en charge uniquement le streaming sans état.
-
Photon n'améliore pas les requêtes qui s'exécutent normalement en moins de deux secondes.
-
Les instances basées sur Graviton avec Photon ne prennent pas en charge les Databricks Container Services pour compute dédié ou les warehouses Databricks SQL. Cette limitation ne s'applique pas aux Databricks Container Services pour compute standard.