Udostępnij za pośrednictwem


Informacje o wersji obliczeniowej bezserwerowej

W tym artykule opisano funkcje i zachowania, które są obecnie dostępne i nadchodzący w przypadku bezserwerowych obliczeń dla notesów i zadań.

Aby uzyskać więcej informacji na temat obliczeń bezserwerowych, zobacz Łączenie się z bezserwerowych obliczeń.

Usługa Databricks okresowo publikuje aktualizacje bezserwerowych zasobów obliczeniowych, automatycznie uaktualniając bezserwerowe środowisko uruchomieniowe obliczeniowe w celu obsługi ulepszeń i uaktualnień do platformy. Wszyscy użytkownicy otrzymują te same aktualizacje, wdrażane w krótkim czasie.

Nadchodzące zmiany zachowania

W tej sekcji wyróżniono zmiany zachowania, które pojawią się w następnej bezserwerowej wersji obliczeniowej. Po wypchnięciu zmian do środowiska produkcyjnego zostaną one dodane do informacji o wersji.

Wrzesień 2024 r.

Zmiana powiązania schematu dla widoków

Gdy typy danych w podstawowym zapytaniu widoku zmieniają się z tych używanych podczas tworzenia widoku, usługa Databricks nie będzie już zgłaszać błędów odwołań do widoku, gdy nie można wykonać bezpiecznego rzutowania. Zamiast tego widok będzie kompensowany przy użyciu regularnych reguł rzutowania tam, gdzie to możliwe.

Ta zmiana umożliwia usłudze Databricks bardziej czytelne tolerowanie zmian schematu tabeli.

Nie zezwalaj na tolerancję składni nieudokumentowanej ! dla NOT logiki logicznej poza logią logiczną

Usługa Databricks nie będzie już tolerować użycia ! jako synonimu poza NOT logiką logiczną. Na przykład:

CREATE ... IF ! EXISTS, IS ! Null, ! NULL kolumna lub właściwość ! IN pola i ! Między elementami musi zostać zastąpiony:

CREATE ... IF NOT EXISTS, , NOT NULL IS NOT NULLwłaściwość kolumny lub pola NOT IN i NOT BETWEEN.

Ta zmiana zmniejsza zamieszanie, jest zgodna ze standardem SQL i sprawia, że usługa SQL jest bardziej przenośna.

Operator prefiksu ! logicznego (np. !is_mgr lub !(true AND false)) nie ma wpływu na tę zmianę.

Nie zezwalaj na nieudokumentowane i nieprzetworzone fragmenty składni definicji kolumny w widokach

Usługa Databricks obsługuje funkcję CREATE VIEW z nazwanymi kolumnami i komentarzami kolumn. Specyfikacja typów kolumn, NOT NULL ograniczeń lub DEFAULT została tolerowana w składni bez żadnego efektu. Usługa Databricks usunie tę tolerancję składni.

Dzięki temu można zmniejszyć zamieszanie, dopasować je do standardu SQL i umożliwić przyszłe ulepszenia.

Informacje o wersji

Ta sekcja zawiera informacje o wersji dla obliczeń bezserwerowych. Informacje o wersji są zorganizowane według roku i tygodnia roku. Przetwarzanie bezserwerowe zawsze jest uruchamiane przy użyciu ostatnio wydanej wersji wymienionej tutaj.

Zestaw JDK został uaktualniony z zestawu JDK 8 do zestawu JDK 17

15 sierpnia 2024 r.

Bezserwerowe obliczenia dla notesów i przepływów pracy zostały zmigrowane z zestawu Java Development Kit (JDK) 8 do zestawu JDK 17 po stronie serwera. To uaktualnienie obejmuje następujące zmiany behawioralne:

Poprawki błędów

Poprawne analizowanie wzorców wyrażeń regularnych z negacją w zagnieżdżonym grupowaniu znaków: dzięki temu uaktualnieniu usługa Azure Databricks obsługuje teraz poprawne analizowanie wzorców wyrażeń regularnych z negacją w zagnieżdżonym grupowaniu znaków. Na przykład [^[abc]] zostanie przeanalizowany jako "dowolny znak, który nie jest jednym z "abc".

Ponadto zachowanie aplikacji Photon było niespójne z platformą Spark dla klas znaków zagnieżdżonych. Wzorce wyrażeń regularnych zawierające zagnieżdżone klasy znaków nie będą już używać funkcji Photon i zamiast tego będą używać platformy Spark. Zagnieżdżona klasa znaków to dowolny wzorzec zawierający nawiasy kwadratowe w nawiasach kwadratowych, takich jak [[a-c][1-3]].

Wersja 2024.30

23 lipca 2024 r.

Ta bezserwerowa wersja obliczeniowa w przybliżeniu odpowiada środowisku Databricks Runtime 15.1

Nowe funkcje

Obsługa składni gwiazdki (*) w klauzuliWHERE : teraz możesz użyć składni gwiazdki (*) w WHERE klauzuli , aby odwołać się do wszystkich kolumn z SELECT listy.

Na przykład SELECT * FROM VALUES(1, 2) AS T(a1, a2) WHERE 1 IN(T.*).

Zmiany

Ulepszone odzyskiwanie błędów na potrzeby analizowania kodu JSON: analizator JSON używany dla from_json() wyrażeń ścieżki JSON i teraz odzyskuje szybsze odzyskiwanie po źle sformułowanej składni, co skutkuje mniejszą utratą danych.

W przypadku napotkania źle sformułowanej składni JSON w polu struktury, wartości tablicy, klucza mapy lub wartości mapy analizator JSON zwróci teraz NULL tylko nieczytelne pole, klucz lub element. Kolejne pola, klucze lub elementy zostaną prawidłowo przeanalizowane. Przed tą zmianą analizator JSON porzucił analizowanie tablicy, struktury lub mapy i zwracał NULL pozostałą zawartość.

Wersja 2024.15

15 kwietnia 2024 r.

Jest to początkowa bezserwerowa wersja obliczeniowa. Ta wersja w przybliżeniu odpowiada środowisku Databricks Runtime 14.3 z pewnymi modyfikacjami, które usuwają obsługę niektórych funkcji bezserwerowych i starszych.

Obsługiwane parametry konfiguracji platformy Spark

Aby zautomatyzować konfigurację platformy Spark na bezserwerowych obliczeniach, usługa Databricks usunęła obsługę ręcznego ustawiania większości konfiguracji platformy Spark. Można ręcznie ustawić tylko następujące parametry konfiguracji platformy Spark:

  • spark.sql.legacy.timeParserPolicy (wartość domyślna to EXCEPTION)
  • spark.sql.session.timeZone (wartość domyślna to Etc/UTC)
  • spark.sql.shuffle.partitions (wartość domyślna to auto)
  • spark.sql.ansi.enabled (wartość domyślna to true)

Jeśli ustawisz konfigurację platformy Spark, która nie znajduje się na tej liście, zadanie jest uruchamiane na bezserwerowych obliczeniach, zakończy się niepowodzeniem.

Aby uzyskać więcej informacji na temat konfigurowania właściwości platformy Spark, zobacz Ustawianie właściwości konfiguracji platformy Spark w usłudze Azure Databricks.

Buforowanie poleceń interfejsu API i sql nie jest obsługiwane

Użycie interfejsów API ramki danych i pamięci podręcznej SQL nie jest obsługiwane. Użycie dowolnego z tych interfejsów API lub poleceń SQL spowoduje wyjątek.

Nieobsługiwane interfejsy API:

Nieobsługiwane polecenia SQL:

Globalne widoki tymczasowe nie są obsługiwane

Tworzenie globalnych widoków tymczasowych nie jest obsługiwane. Użycie jednego z tych poleceń spowoduje wyjątek:

Zamiast tego usługa Databricks zaleca używanie widoków tymczasowych sesji lub tworzenie tabel, w których wymagane jest przekazywanie danych między sesjami.

FUNKCJA CREATE (zewnętrzna) nie jest obsługiwana

Polecenie CREATE FUNCTION (external) nie jest obsługiwane. Użycie tego polecenia powoduje wyjątek.

Zamiast tego usługa Databricks zaleca używanie funkcji CREATE (SQL i Python) do tworzenia funkcji zdefiniowanych przez użytkownika.

Tabele Usługi Hive SerDe nie są obsługiwane

Tabele usługi Hive SerDe nie są obsługiwane. Ponadto odpowiednie polecenie LOAD DATA , które ładuje dane do tabeli Usługi Hive SerDe, nie jest obsługiwane. Użycie polecenia spowoduje wyjątek.

Obsługa źródeł danych jest ograniczona do AVRO, BINARYFILE, CSV, DELTA, JSON, KAFKA, ORC, PARQUET, ORC, TEXT i XML.

Zmienne Hive nie są obsługiwane

Zmienne Hive (na przykład ${env:var}, ${configName}, ${system:var}i spark.sql.variable) lub odwołania do zmiennych konfiguracji przy użyciu ${var} składni nie są obsługiwane. Użycie zmiennych Hive spowoduje wyjątek.

Zamiast tego użyj metody DECLARE VARIABLE, SET VARIABLE i SQL session variable references and parameter markers ('?', or ':var'), aby zadeklarować, zmodyfikować i odwołać stan sesji. Można również użyć klauzuli IDENTIFIER, aby sparametryzować nazwy obiektów w wielu przypadkach.

funkcje input_file są przestarzałe

Funkcje input_file_name(), input_file_block_length() i input_file_block_start() są przestarzałe. Korzystanie z tych funkcji jest zdecydowanie zniechęcane.

Zamiast tego użyj kolumny metadanych pliku, aby pobrać informacje o metadanych pliku.

Zmiany zachowań

Bezserwerowe obliczenia w wersji 2024.15 obejmują następujące zmiany behawioralne:

  • poprawka usterki unhex(hexStr): w przypadku korzystania z unhex(hexStr) funkcji szesnastkowy jest zawsze dopełniany do całego bajtu. Wcześniej funkcja unhex zignorowała pierwszy bajt połowy. Na przykład: unhex('ABC') teraz tworzy x'0ABC' zamiast x'BC'.
  • Aliasy kolumn generowanych automatycznie są teraz stabilne: gdy wynik wyrażenia jest przywoływane bez aliasu kolumny określonego przez użytkownika, ten automatycznie wygenerowany alias będzie teraz stabilny. Nowy algorytm może spowodować zmianę wcześniej wygenerowanych automatycznie nazw używanych w funkcjach, takich jak zmaterializowane widoki.
  • Skanowania tabel z polami CHAR typów są teraz zawsze dopełniane: tabele delty, niektóre tabele JDBC i zewnętrzne źródła danych przechowują dane CHAR w postaci nieupełnionej. Podczas odczytywania usługa Databricks będzie teraz dopełniać dane spacjami do zadeklarowanej długości, aby zapewnić poprawną semantykę.
  • Rzutowania z BIGINT/DECIMAL do TIMESTAMP zgłaszają wyjątek dla przepełnionych wartości: usługa Databricks umożliwia rzutowanie z bigINT i dziesiętnego na ZNACZNIK CZASU, traktując wartość jako liczbę sekund z epoki unix. Wcześniej usługa Databricks zwracała przepełnione wartości, ale teraz zgłasza wyjątek w przypadkach przepełnienia. Użyj polecenia try_cast , aby zwrócić wartość NULL zamiast wyjątku.
  • Ulepszono wykonywanie funkcji zdefiniowanej przez użytkownika PySpark w celu dopasowania do dokładnego zachowania wykonywania funkcji zdefiniowanej przez użytkownika w obliczeniach pojedynczego użytkownika: Wprowadzono następujące zmiany:
    • Funkcje zdefiniowane przez użytkownika z typem zwracanym ciągu nie są już niejawnie konwertowane wartości inne niż ciągi na ciągi. Wcześniej funkcje zdefiniowane przez użytkownika z zwracanym typem str klasy zastosują str(..) otokę do wyniku niezależnie od rzeczywistego typu danych zwróconej wartości.
    • Funkcje zdefiniowane przez użytkownika z typami timestamp zwracanymi nie stosują już niejawnie konwersji strefy czasowej na znaczniki czasu.

Środowisko systemu

Obliczenia bezserwerowe obejmują następujące środowisko systemowe:

  • System operacyjny: Ubuntu 22.04.3 LTS
  • Python: 3.10.12
  • Delta Lake: 3.1.0

Zainstalowane biblioteki języka Python

Następujące biblioteki języka Python są instalowane domyślnie w środowisku obliczeniowym bezserwerowym. Dodatkowe zależności można zainstalować przy użyciu panelu bocznego Środowisko . Zobacz Instalowanie zależności notesu.

Biblioteka Wersja Biblioteka Wersja Biblioteka Wersja
anyio 3.5.0 argon2-cffi 21.3.0 argon2-cffi-bindings 21.2.0
asttokens 2.0.5 astunparse 1.6.3 attrs 22.1.0
backcall 0.2.0 beautifulsoup4 4.11.1 black (czarny) 22.6.0
wybielacz 4.1.0 kierunkowskaz 1.4 boto3 1.24.28
botocore 1.27.96 cachetools 5.3.2 certifi 2022.12.7
cffi 1.15.1 chardet 4.0.0 charset-normalizer 2.0.4
kliknięcie 8.0.4 Comm 0.1.2 konturowy 1.0.5
kryptografia 39.0.1 rowerzysta 0.11.0 Cython 0.29.32
databricks-connect 14.3.1 databricks-sdk 0.20.0 dbus-python 1.2.18
debugpy 1.6.7 dekorator 5.1.1 defusedxml 0.7.1
distlib 0.3.8 docstring-to-markdown 0,11 punkty wejścia 0,4
Wykonywanie 0.8.3 aspekty — omówienie 1.1.1 fastjsonschema 2.19.1
filelock 3.13.1 fonttools 4.25.0 google-auth 2.28.1
googleapis-common-protos 1.62.0 grpcio 1.62.0 stan obiektu grpcio 1.62.0
httplib2 0.20.2 idna 3.4 importlib-metadata 4.6.4
ipyflow-core 0.0.198 ipykernel 6.25.0 ipython 8.14.0
ipython-genutils 0.2.0 ipywidgets 7.7.2 jedi 0.18.1
Jeepney 0.7.1 Jinja2 3.1.2 jmespath 0.10.0
joblib 1.2.0 jsonschema 4.17.3 jupyter-client 7.3.4
jupyter-server 1.23.4 jupyter_core 5.2.0 jupyterlab-pygments 0.1.2
jupyterlab-widgets 1.0.0 keyring 23.5.0 kiwisolver 1.4.4
launchpadlib 1.10.16 lazr.restfulclient 0.14.4 lazr.uri 1.0.6
lxml 4.9.1 MarkupSafe 2.1.1 matplotlib 3.7.0
biblioteka matplotlib-inline 0.1.6 Mccabe 0.7.0 mistune 0.8.4
więcej itertools 8.10.0 mypy-extensions 0.4.3 nbclassic 0.5.2
nbclient 0.5.13 nbconvert 6.5.4 nbformat 5.7.0
nest-asyncio 1.5.6 nodeenv 1.8.0 notes 6.5.2
notebook_shim 0.2.2 numpy 1.23.5 oauthlib 3.2.0
opakowanie 23.2 Pandas 1.5.3 pandocfilters 1.5.0
parso 0.8.3 pathspec 0.10.3 Patsy 0.5.3
pexpect 4.8.0 pickleshare 0.7.5 Poduszka 9.4.0
22.3.1 platformdirs 2.5.2 kreślenie 5.9.0
wtyczka 1.0.0 prometheus-client 0.14.1 prompt-toolkit 3.0.36
protobuf 4.25.3 psutil 5.9.0 psycopg2 2.9.3
ptyprocess 0.7.0 pure-eval 0.2.2 py4j 0.10.9.7
pyarrow 8.0.0 pyarrow-hotfix 0.5 pyasn1 0.5.1
pyasn1-modules 0.3.0 pyccolo 0.0.52 pycparser 2.21
pydantic 1.10.6 pyflakes 3.1.0 Pygments 2.11.2
PyGObject 3.42.1 PyJWT 2.3.0 pyodbc 4.0.32
pyparsing 3.0.9 pyright 1.1.294 pirstent 0.18.0
python-dateutil 2.8.2 python-lsp-jsonrpc 1.1.1 python-lsp-server 1.8.0
pytoolconfig 1.2.5 pytz 2022.7 pyzmq 23.2.0
żądania 2.28.1 lina 1.7.0 rsa 4.9
s3transfer 0.6.2 scikit-learn 1.1.1 scipy 1.10.0
seaborn 0.12.2 SecretStorage 3.3.1 Send2Trash 1.8.0
setuptools 65.6.3 Sześć 1.16.0 wąchanie 1.2.0
zupy 2.3.2.post1 ssh-import-id 5,11 stack-data 0.2.0
statsmodels 0.13.5 Wytrzymałość 8.1.0 terminado 0.17.1
threadpoolctl 2.2.0 tinycss2 1.2.1 tokenize-rt 4.2.1
tomli 2.0.1 tornado 6.1 traitlety 5.7.1
typing_extensions 4.4.0 ujson 5.4.0 nienadzorowane uaktualnienia 0.1
urllib3 1.26.14 virtualenv 20.16.7 wadllib 1.3.6
wcwidth 0.2.5 webencodings 0.5.1 websocket-client 0.58.0
whatthepatch 1.0.2 koło 0.38.4 widgetsnbextension 3.6.1
yapf 0.33.0 Zipp 1.0.0