Photon runtime

Photon är den inbyggda vektoriserade frågemotorn i Azure Databricks som skrivits för att vara direkt kompatibel med Apache Spark-API:er så att den fungerar med din befintliga kod. Den har utvecklats i C++ för att dra nytta av modern maskinvara och använder de senaste teknikerna inom vektoriserad frågebearbetning för att dra nytta av parallellitet på data- och instruktionsnivå i processorer, vilket förbättrar prestanda för verkliga data och program – allt internt på din datasjö. Photon är en del av en körmiljö med höga prestanda som kör dina befintliga SQL- och DataFrame-API-anrop snabbare och minskar den totala kostnaden per arbetsbelastning. Photon används som standard i Databricks SQL-lager.

Azure Databricks-kluster

Photon är tillgängligt för kluster som kör Databricks Runtime 9.1 LTS och senare.

Om du vill aktivera Fotonacceleration markerar du kryssrutan Använd fotonacceleration när du skapar klustret. Om du skapar klustret med hjälp av kluster-API:et anger du runtime_engine till PHOTON.

Photon stöder ett antal instanstyper på drivrutins- och arbetsnoderna. Photon-instanstyper använder DWU:er med en annan hastighet än samma instanstyp som kör körningen som inte är Photon. Mer information om Photon-instanser och DBU-förbrukning finns på prissättningssidan för Azure Databricks.

Photon-fördelar

  • Stöder SQL och motsvarande DataFrame-åtgärder mot Delta- och Parquet-tabeller.
  • Påskyndar frågor som bearbetar en betydande mängd data (100 GB+) och inkluderar aggregeringar och kopplingar.
  • Snabbare prestanda när data används upprepade gånger från diskcachen.
  • Mer robust genomsökningsprestanda för tabeller med många kolumner och många små filer.
  • Snabbare Delta- och Parquet-skrivning med hjälp av UPDATE, DELETE, MERGE INTO, INSERToch CREATE TABLE AS SELECT, särskilt för breda tabeller (hundratals till tusentals kolumner).
  • Ersätter sorteringskopplingar med hash-kopplingar.

Fotontäckning

Operatorer

  • Skanna, filtrera, projekt
  • Hash-aggregering/koppling/blandning
  • Nested-Loop join
  • Null-Aware antikoppling
  • Union, Expand, ScalarSubquery
  • Delta/Parquet Skriv mottagare
  • Sortera
  • Fönsterfunktion

Uttryck

  • Jämförelse/logik
  • Aritmetik/matematik (de flesta)
  • Villkorsstyrd (IF, CASE osv.)
  • Sträng (vanliga)
  • Kastar
  • Aggregeringar (de vanligaste)
  • Datum/tidsstämpel

Datatyper

  • Byte/kort/int/lång
  • Boolesk
  • Sträng/binär
  • Decimal
  • Flyttal/dubbel
  • Datum/tidsstämpel
  • Struct-datatyp
  • Matris
  • Karta

I följande tabell visas Azure Databricks-uttryck som stöds och den lägsta Version av Databricks Runtime som stöder det.

Name
Abs
Acos
Lägg till
AddMonths
AesDecrypt
AesEncrypt
Och
ArrayContains
ArrayDistinct
ArrayExcept
ArrayExists
ArrayFilter
ArrayForAll
ArrayIntersect
ArrayJoin
ArraySize
ArrayTransform
ArrayUnion
Atan
Atan2
Genomsnitt
Base64
Diskretiserad
BitAndAgg
BitLength
BitOrAgg
BitwiseAnd
BitwiseNot
Bitviseller
BitwiseReverse
BitwiseXor
BitXorAgg
GränsAsGeojson
GränsAsWkb
BoundaryAsWkt
Kasta
Cbrt
CeilExpressionBuilder
CenterAsGeojson
CenterAsWkb
CenterAsWkt
Chr
Coalesce
CollectList
Concat
ConcatWs
Conv
Cos
Antal
CreateArray
CreateMap
CreateNamedStruct
CreateStruct
CurrentCatalog
CurrentDatabase
CurrentDate
CurrentTimestamp
CurrentTimeZone
CurrentUser
DateAdd
DateDiff
DateFormatClass
DateFromUnixDate
DateSub
DayOfMonth
DayOfWeek
DayOfYear
Avkoda
DenseRank
Dividera
ElementAt
EqualNullSafe
EqualTo
Exp
Explodera
Extrahera
Första
FloorExpressionBuilder
FromUnixTime
FromUTCTimestamp*
Hämta
GetJsonObject
GreaterThan
GreaterThanOrEqual
Största
GridDistance
H3ToString
Hex
Tid
Om
I
InitCap
InputFileBlockLength
InputFileBlockStart
InputFileName
Infälld
IntegralDivide
IsChildOf
IsNaN
IsNotNull
Ärnull
IsPentagon
IsValid
JsonToStructs
Fördröjning
Sista
LastDay
Lead
Minst
Längd
LengthOfJsonArray
LessThan
Levenshtein
Gilla
Loggas
Log2
LongLatAsH3
LongLatAsH3String
Lägre
LPadExpressionBuilder
MakeDate
MakeTimestamp
Max
MaxChild
Md5
MicrosToTimestamp
MillisToTimestamp
Min
MinChild
Minut
MonotonicallyIncreasingID
Månad
MonthsBetween
Multiplicera
Murmur3Hash
NaNvl
NextDay
Inte
Now
NthValue
NTile
NullIf
Nvl
Nvl2
OktettLängd
ParsaToDate
ParseToTimestamp
Percentil
Procentrang
Pi
Pmod
PosExplode
Pow
Kvartal
Rand
Rangordning
RegExpExtract
RegExpExtractAll
RegExpReplace
RegrAvgX
RegrAvgY
Rest
Lösning
Reverse
Reverse
RLike
Round
RowNumber
RPadExpressionBuilder
Second
SecondsToTimestamp
Sha1
Sha2
SkiftLeft
SkiftRight
ShiftRightUnsigned
Sin
Storlek
Skiva
Soundex
SparkVersion
Sqrt
StddevPop
StddevSamp
StringInstr
StringLocate
StringRepeat
StringSpace
StringSplit
StringToH3
StringTranslate
StringTrim
StringTrimBoth
StringTrimLeft
StringTrimRight
StructsToJson
Delsträng
Subtrahera
Summa
Tan
ToChildren
ToParent
ToRadians
ToUnixTimestamp
ToUTCTimestamp
Trunkera
TruncTimestamp
TryElementAt
TryValidate
UnaryMinus
UnBase64
Ohörd
UnixDate
UnixMicros
UnixMillis
UnixSeconds
UnixTimestamp
Upper
Uuid
Verifiera
VarianceSamp
Vardag
WeekOfYear
XxHash64
Year
*from_utc_timestamp stöds inte fullt ut av Photon. Mer information finns i from_utc_timestamp .

Begränsningar

  • Strukturerad direktuppspelning: Photon stöder för närvarande tillståndslös strömning med Delta, Parquet och CSV. Kafka- och Kinesis-stöd finns i offentlig förhandsversion
  • Stöder inte UDF:er.
  • Stöder inte RDD-API:er.
  • Förväntas inte förbättra kortsiktiga frågor (<2 sekunder), till exempel frågor mot små mängder data.

Funktioner som inte stöds av Photon körs på samma sätt som med Databricks Runtime. det finns ingen prestandafördel för dessa funktioner.