Poznámky k verzi bezserverových výpočetních prostředků
Tento článek vysvětluje funkce a chování, které jsou aktuálně dostupné a nadcházející na výpočetních prostředcích bez serveru pro poznámkové bloky a úlohy.
Další informace o bezserverových výpočetních prostředcích najdete v tématu Připojení k výpočetním prostředkům bez serveru.
Azure Databricks pravidelně vydává aktualizace bezserverového výpočetního prostředí, které automaticky upgraduje bezserverový výpočetní modul runtime, aby podporoval vylepšení a upgrady na platformu. Všichni uživatelé dostávají stejné aktualizace get, které jsou rozšířeny v krátkém časovém období.
bezserverové verze prostředí
Bezserverové výpočetní prostředí Databricks pro poznámkové bloky a úlohy nabízí architekturu založenou na technologii Spark Connect, která umožňuje nezávislé upgrady modulu bez dopadu na aplikaci. Kvůli zajištění kompatibility aplikací používají bezserverové úlohy rozhraní API verze označované jako verze prostředí nebo klienta, které zůstává kompatibilní s novějšími verzemi serveru.
Nejnovější verze prostředí bude nadále dostávat aktualizace, dokud nebude vydána nová verze. Uživatelé můžou select z některé z následujících podporovaných verzí prostředí:
Poznámky k verzi
Tato část obsahuje poznámky k verzi pro bezserverové výpočetní prostředky. Poznámky k verzi jsou uspořádány podle roku a týdne v roce. Bezserverové výpočetní prostředí se vždy spouští pomocí nejnovější vydané verze uvedené zde.
Verze 15.4
28. října 2024
Tato bezserverová výpočetní verze přibližně odpovídá modulu Databricks Runtime 15.4.
Nové funkce
-
Ověřovací funkce UTF-8: Tato verze zavádí následující funkce pro ověřování řetězců UTF-8:
- is_valid_utf8 ověřil, jestli je řetězec platným řetězcem UTF-8.
- make_valid_utf8 převede potenciálně neplatný řetězec UTF-8 na platný řetězec UTF-8 pomocí náhradních znaků.
- validate_utf8 vyvolá chybu, pokud vstup není platným řetězcem UTF-8.
-
try_validate_utf8 vrátí
NULL
, pokud vstup není platným řetězcem UTF-8.
- Povolit UniForm Iceberg pomocí ALTER TABLE: Nyní můžete povolit UniForm Iceberg na existujících tables bez přepsání datových souborů. Vizte Povolte čtení Icebergu na existujícím table.
-
try_url_decode funkce: Tato verze zavádí funkci try_url_decode , která dekóduje řetězec kódovaný adresou URL. Pokud řetězec není ve správném formátu, vrátí
NULL
funkce místo vyvolání chyby. -
Volitelně umožňuje optimalizátoru spoléhat na nevymažená omezení cizího klíče: Ke zlepšení výkonu dotazů teď můžete zadat klíčové slovo
RELY
pro omezeníFOREIGN KEY
při VYTVOŘENÍ nebo ALTERtable. -
Paralelizované úlohy pro selektivní přepisy: Selektivní přepisy pomocí
replaceWhere
nyní spouští úlohy, které paralelně odstraňují data a přidávají insert nová data, což zlepšuje výkon dotazů a využití clusteru. -
Vylepšený výkon pro kanál změn dat s použitím selektivního přepsání: Selektivní přepisy pomocí
replaceWhere
na tables s datovým kanálem změn už nezapisují samostatné datové soubory změn pro vložená data. Tyto operace používají skrytou_change_type
column, která se nachází v podkladových datových souborech Parquet, k zaznamenávání změn bez amplifikace zápisu. -
Vylepšená latence dotazu pro
COPY INTO
příkaz: Tato verze obsahuje změnu, která zlepšuje latenci dotazu proCOPY INTO
příkaz. Toto vylepšení je implementováno tak, že načtení stavu úložištěm stavů RocksDB je asynchronní. Při této změně byste měli vidět vylepšení počátečních časů pro dotazy s velkými stavy, jako jsou dotazy s velkým počtem již přijatých souborů. -
podpora pro odstranění funkce kontrolních omezení table: Funkci
checkConstraints
table teď můžete odstranit z Delta table pomocíALTER TABLE table_name DROP FEATURE checkConstraints
. Viz Zakázání omezení kontroly.
Změny chování
Schema změna vazby pro views: Když se datové typy v podkladovém dotazu zobrazení změní z těch, které se použily při prvním vytvoření zobrazení, Databricks už nevyvolá chyby pro odkazy na zobrazení, pokud není možné provést bezpečné přetypování.
Místo toho kompenzuje tím, že používá pravidla normálního přetypování které jsou where možná. Tato změna umožňuje Databricks tolerovat tableschema změny snadněji.
Zákaz nezdokumentované
!
tolerance syntaxe proNOT
vnější logickou logiku: Databricks už nebude tolerovat použití!
jako synonyma proNOT
mimo logickou logiku. Tato změna snižuje nejasnosti, je v souladu se standardem SQL a usnadňuje přenosnost SQL. Příklad:CREATE ... IF ! EXISTS
, IS ! NULL,! NULL
column nebo vlastnost pole,! IN
a ! BETWEEN musí být nahrazeno tímto:CREATE ... IF NOT EXISTS
,IS NOT NULL
,NOT NULL
column nebo vlastnost pole,NOT IN
aNOT BETWEEN
.Na operátor logické předpony
!
(např.!is_mgr
nebo!(true AND false)
) tato změna nemá vliv.zakázat nezdokumentované a nezpracované části syntaxe definice column v views: Databricks podporuje CREATE VIEW s pojmenovanými columns a column komentáři.
Specifikace typů column, omezení
NOT NULL
neboDEFAULT
byla v syntaxi tolerována bez having jakéhokoli efektu. Databricks remove tuto syntaxi tolerance. Tím se sníží záměna, zarovná se se standardem SQL a umožní budoucí vylepšení.Konzistentní zpracování chyb pro dekódování Base64 ve Sparku a Photonu: Tato verze mění způsob, jakým Photon zpracovává chyby dekódování Base64 tak, aby odpovídaly zpracování těchto chyb Sparku. Před těmito změnami se cesta generování kódu Photon a Spark někdy nepodařilo vyvolat výjimky analýzy, zatímco Spark interpretoval správně provedené
IllegalArgumentException
spuštění neboConversionInvalidInputError
. Tato update zajišťuje, že Photon konzistentně vyvolává stejné výjimky jako Spark během chyb dekódování Base64 a poskytuje předvídatelnější a spolehlivější zpracování chyb.Přidání
CHECK
constraint na neplatný column nyní vrátí UNRESOLVED_COLUMN. WITH_SUGGESTION třída chyb: Chcete-li poskytovat užitečnější chybové zprávy, vrátí v Databricks Runtime 15.3 a vyšší příkazALTER TABLE ADD CONSTRAINT
, který obsahujeCHECK
constraint odkazující na neplatný název column vrátí UNRESOLVED_COLUMN. WITH_SUGGESTION třída chyby. Dříve byla vrácenaINTERNAL_ERROR
.
JDK se upgraduje z JDK 8 na JDK 17.
15. srpna 2024
Bezserverové výpočetní prostředky pro poznámkové bloky a pracovní postupy se migrovaly ze sady Java Development Kit (JDK) 8 na JDK 17 na straně serveru. Tento upgrade zahrnuje následující změny chování:
Opravy chyb
Správná analýza vzorů regulárních výrazů s negací ve vnořeném seskupování znaků: Při tomto upgradu teď Azure Databricks podporuje správnou analýzu vzorů regulárních výrazů s negací ve vnořeném seskupování znaků. Bude například [^[abc]]
analyzován jako "libovolný znak, který není jedním z "abc".
Kromě toho chování Photon bylo nekonzistentní se Sparkem pro vnořené třídy znaků. Vzory regulárních výrazů obsahující vnořené třídy znaků už nebudou používat Photon a místo toho budou používat Spark. Vnořená třída znaků je libovolný vzor obsahující hranaté závorky v hranatých závorkách, například [[a-c][1-3]]
.
Verze 15.1
23. července 2024
Tato bezserverová verze výpočetních prostředků přibližně odpovídá modulu Databricks Runtime 15.1.
Nové funkce
Podpora syntaxe hvězdičky (*
) vklauzule WHERE
: Nyní můžete pomocí syntaxe hvězdičky (*
) v klauzuli WHERE
odkazovat na všechny columns z SELECT
list.
Například SELECT * FROM VALUES(1, 2) AS T(a1, a2) WHERE 1 IN(T.*)
.
Změny
Vylepšené obnovení chyb pro parsování JSON: Analyzátor JSON používaný pro from_json()
výrazy cesty JSON se teď obnovuje rychleji z poškozené syntaxe, což vede k menší ztrátě dat.
Při výskytu chybné syntaxe JSON v poli struktury, maticové hodnotě, klíči mapy nebo hodnotě mapy se analyzátor JSON teď vrátí NULL
jenom pro nečitelné pole, klíč nebo prvek. Další pole, klíče nebo prvky se správně parsují. Před touto změnou parser JSON opustil analýzu pole, struktury nebo mapování a vrátil NULL
zbývající obsah.
Verze 14.3
15. dubna 2024
Jedná se o počáteční bezserverovou výpočetní verzi. Tato verze přibližně odpovídá Databricks Runtime 14.3 s některými úpravami, které remove podporu některých funkcí bez serveru a starších verzí.
Podporovaná Konfigurace Sparku parameters
Kvůli automatizaci konfigurace Sparku na bezserverových výpočetních prostředcích služba Azure Databricks odebrala podporu ručního nastavení většiny konfigurací Sparku. Můžete ručně set pouze následující parameterskonfigurace Sparku:
-
spark.sql.legacy.timeParserPolicy
(výchozí hodnota jeCORRECTED
) -
spark.sql.session.timeZone
(výchozí hodnota jeEtc/UTC
) -
spark.sql.shuffle.partitions
(výchozí hodnota jeauto
) -
spark.sql.ansi.enabled
(výchozí hodnota jetrue
)
Úloha na bezserverových výpočetních prostředcích selže, pokud set konfiguraci Sparku, která není v této list.
Další informace o konfiguraci vlastností Sparku najdete v tématu Set vlastnosti konfigurace Sparku v azure Databricks.
input_file funkce jsou zastaralé
Funkce input_file_name(), input_file_block_length() a input_file_block_start() jsou zastaralé. Používání těchto funkcí se důrazně nedoporučuje.
Místo toho použijte metadata souboru column k získání informací o souboru.
Změny chování
Bezserverové výpočetní prostředky verze 2024.15 zahrnují následující změny chování:
-
oprava chyby unhex(hexStr): Při použití
unhex(hexStr)
funkce je hexStr vždy vycpaný do celého bajtu. Dříve funkce unhex ignorovala první poloviční bajt. Například:unhex('ABC')
nyní vytvoříx'0ABC'
místox'BC'
. - automaticky generované aliasy column jsou teď stabilní: Když se na výsledek výrazu odkazuje bez uživatelem zadaného aliasu column, bude tento automaticky vygenerovaný alias nyní stabilní. Nový algoritmus může vést ke změně dříve automaticky generovaných názvů používaných ve funkcích, jako jsou materializované views.
-
Table skeny s poli typu
CHAR
jsou nyní vždy vyplněny: delta tables, některé JDBC tablesa externí zdroje dat ukládají data typu CHAR v nevyplněné podobě. Při čtení teď Azure Databricks rozdělí data mezerami na deklarovanou délku, aby se zajistila správná sémantika. -
Přetypování z BIGINT/DECIMAL na TIMESTAMP vyvolá výjimku pro přetečení values: Azure Databricks umožňuje přetypování z BIGINT a DECIMAL na TIMESTAMP tím, že považuje hodnotu za počet sekund z epochy Unixu. Dříve služba Azure Databricks vracela přetečení values, ale teď v případě přetečení vyvolává výjimku. Slouží
try_cast
k vrácení hodnoty NULL místo výjimky. -
Bylo vylepšeno provádění PySpark UDF tak, aby odpovídalo přesnému chování provádění UDF na výpočetních prostředcích jednoho uživatele: Provedli jsme následující změny:
- Uživatelsky definované funkce s návratovým typem řetězce již implicitně nepřevádějí neřetězcové typy, jako je values, na řetězce. Dříve by funkce definované uživatelem s návratovým typem
str
použily obálkustr(..)
na výsledek bez ohledu na skutečný datový typ vrácené hodnoty. - Funkce definované uživatelem s
timestamp
návratovými typy už implicitně nepoužijí převod timezone na časová razítka.
- Uživatelsky definované funkce s návratovým typem řetězce již implicitně nepřevádějí neřetězcové typy, jako je values, na řetězce. Dříve by funkce definované uživatelem s návratovým typem