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
,INSERT
ochCREATE 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.