Freigeben über


Versionshinweise für serverloses Computing

In diesem Artikel werden die Features und Verhaltensweisen erläutert, die derzeit für serverloses Computing für Notebooks und Aufträge verfügbar und geplant sind.

Weitere Informationen zu serverlosem Computing finden Sie unter Herstellen einer Verbindung mit serverlosem Computing.

Databricks veröffentlicht regelmäßig Updates für serverloses Computing und aktualisiert automatisch die Runtime für serverloses Computing, um Verbesserungen und Upgrades auf der Plattform zu unterstützen. Alle Benutzer erhalten innerhalb eines kurzen Zeitraums die gleichen Updates.

Anstehende Verhaltensänderungen

In diesem Abschnitt werden Verhaltensänderungen hervorgehoben, die in der nächsten Version von serverlosem Computing verfügbar gemacht werden. Wenn die Änderungen in die Produktion überführt werden, werden sie den Versionshinweisen hinzugefügt.

September 2024

Änderung der Schemabindung für Ansichten

Wenn sich die Datentypen in der zugrunde liegenden Abfrage einer Ansicht in Typen ändern, die beim ersten Erstellen der Ansicht nicht verwendet wurden, gibt Databricks keine Fehler mehr für Verweise auf die Ansicht aus, wenn keine sichere Umwandlung ausgeführt werden kann. Stattdessen wird nach Möglichkeit mit regulären Umwandlungs-Regeln ausgeglichen.

Diese Änderung ermöglicht es Databricks, Tabellenschemaänderungen besser zu tolerieren.

Verbieten nicht dokumentierter !-Syntaxtoleranz für NOT außerhalb der booleschen Logik

Databricks toleriert außerhalb der booleschen Logik nicht mehr das Verwenden von ! als Synonym für NOT. Zum Beispiel:

CREATE ... IF ! EXISTS, IS ! NULL, ! NULL-Spalteneigenschaft oder -Feldeigenschaft, ! IN und ! BETWEEN müssen durch Folgendes ersetzt werden:

CREATE ... IF NOT EXISTS-, IS NOT NULL-, NOT NULL-Spalteneigenschaft oder Feldeigenschaft, NOT IN und NOT BETWEEN.

Diese Änderung vermindert Verwirrung, entspricht dem SQL-Standard und macht SQL portierbarer.

Der booleschen Präfixoperator ! (z. B. !is_mgr oder !(true AND false)) ist von dieser Änderung nicht betroffen.

Verbieten nicht dokumentierter und unverarbeiteter Teile der Spaltendefinitionssyntax in Ansichten

Databricks unterstützt CREATE VIEW mit benannten Spalten und Spaltenkommentaren. Die Spezifikation von Spaltentypen, NOT NULL-Einschränkungen oder DEFAULT wurde in der Syntax toleriert, ohne dass dies Folgen hat. Databricks entfernt diese Syntaxtoleranz.

Dies reduziert Verwirrung, entspricht dem SQL-Standard und ermöglicht zukünftige Verbesserungen.

Versionshinweise

Dieser Abschnitt enthält Versionshinweise für serverloses Computing. Versionshinweise sind nach Jahr und Woche des Jahres strukturiert. Serverloses Computing wird immer mit dem zuletzt veröffentlichten Release ausgeführt, das hier aufgeführt ist.

Das JDK wird von JDK 8 auf JDK 17 aktualisiert

15. August 2024

Serverloses Compute für Notebooks und Workflows wurde von Java Development Kit (JDK) 8 auf der Serverseite zu JDK 17 migriert. Dieses Upgrade umfasst die folgenden Verhaltensänderungen:

Fehlerkorrekturen

Korrektes Parsen von Regex-Mustern mit Negation in geschachtelter Zeichengruppierung: Mit diesem Upgrade unterstützt Azure Databricks jetzt das richtige Parsen von Regex-Mustern mit Negation in geschachtelter Zeichengruppierung. Beispielsweise wird [^[abc]] als „beliebiges Zeichen analysiert, das NICHT abc“ ist.

Darüber hinaus war das Photon-Verhalten mit Spark für geschachtelte Zeichenklassen inkonsistent. Regex-Muster, die geschachtelte Zeichenklassen enthalten, verwenden Photon nicht mehr und verwenden stattdessen Spark. Eine geschachtelte Zeichenklasse ist jedes Muster, das eckige Klammern in eckigen Klammern enthält, z. B. [[a-c][1-3]].

Version 2024.30

23. Juli 2024

Dieses serverlose Computingrelease entspricht ungefähr Databricks Runtime 15.1.

Neue Funktionen

Unterstützung für die Sternsyntax (*) in der WHERE-Klausel: Sie können jetzt die Sternsyntax (*) in der WHERE-Klausel verwenden, um auf alle Spalten in der SELECT-Liste zu verweisen.

Beispiel: SELECT * FROM VALUES(1, 2) AS T(a1, a2) WHERE 1 IN(T.*).

Änderungen

Verbesserte Wiederherstellung nach Fehlern für die JSON-Analyse: Der für from_json() und JSON-Pfadausdrücke verwendete JSON-Parser wird bei falsch formatierter Syntax jetzt schneller wiederhergestellt, sodass weniger Datenverluste auftreten.

Beim falsch formatierter JSON-Syntax in einem Strukturfeld, einem Arraywert, einem Zuordnungsschlüssel oder einem Zuordnungswert gibt der JSON-Parser NULL jetzt nur für das nicht lesbare Feld, den Schlüssel oder das Element zurück. Nachfolgende Felder, Schlüssel oder Elemente werden ordnungsgemäß analysiert. Vor dieser Änderung hat der JSON-Parser die Analyse des Arrays, der Struktur oder der Zuordnung abgebrochen und für den verbleibenden Inhalt NULL zurückgegeben.

Version 2024.15

15. April 2024

Dies ist die Anfangsversion für serverloses Computing. Diese Version entspricht ungefähr Databricks Runtime 14.3 mit einigen Änderungen, um die Unterstützung für einige nicht serverlose und ältere Features zu entfernen.

Unterstützte Spark-Konfigurationsparameter

Um die Konfiguration von Spark auf serverlosem Computing zu automatisieren, hat Databricks die Unterstützung für die manuelle Einstellung aus den meisten Spark-Konfigurationen entfernt. Nur die folgenden Spark-Konfigurationsparameter können manuell festgelegt werden:

  • spark.sql.legacy.timeParserPolicy (Standardwert: EXCEPTION)
  • spark.sql.session.timeZone (Standardwert: Etc/UTC)
  • spark.sql.shuffle.partitions (Standardwert: auto)
  • spark.sql.ansi.enabled (Standardwert: true)

Die Ausführung von Aufträgen auf serverlosem Computing schlägt fehl, wenn Sie eine Spark-Konfiguration festlegen, die nicht in dieser Liste enthalten ist.

Weitere Informationen zum Konfigurieren von Spark-Eigenschaften finden Sie unter Festlegen von Spark-Konfigurationseigenschaften in Azure Databricks.

Keine Unterstützung von Zwischenspeicherungs-API und SQL-Befehlen

Die Verwendung von Dataframe- und SQL-Zwischenspeicherungs-APIs wird nicht unterstützt. Die Verwendung dieser APIs oder SQL-Befehle hat eine Ausnahme zur Folge.

Nicht unterstützte APIs:

Nicht unterstützte SQL-Befehle:

Keine Unterstützung globaler temporärer Sichten

Die Erstellung globaler temporärer Sichten wird nicht unterstützt. Die Verwendung folgender Befehle hat eine Ausnahme zur Folge:

Stattdessen empfiehlt Databricks die Verwendung temporärer Sitzungssichten oder die Erstellung von Tabellen, wenn Daten sitzungsübergreifend übergeben werden müssen.

Keine Unterstützung von „CREATE FUNCTION“ (extern)

Der Befehl CREATE FUNCTION (extern) wird nicht unterstützt. Die Verwendung dieses Befehls führt zu einer Ausnahme.

Stattdessen empfiehlt Databricks die Verwendung von CREATE FUNCTION (SQL und Python) zum Erstellen von UDFs.

Keine Unterstützung von Hive SerDe-Tabellen

Hive SerDe-Tabellen werden nicht unterstützt. Darüber hinaus wird der entsprechende Befehl LOAD DATA, der Daten in eine Hive SerDe-Tabelle lädt, nicht unterstützt. Die Verwendung des Befehls hat eine Ausnahme zur Folge.

Die Unterstützung von Datenquellen ist auf AVRO, BINARYFILE, CSV, DELTA, JSON, KAFKA, ORC, PARQUET, ORC, TEXT und XML beschränkt.

Keine Unterstützung von Hive-Variablen

Hive-Variablen (z. B. ${env:var}, ${configName}, ${system:var} und spark.sql.variable) oder Konfigurationsvariablenverweise mit der Syntax ${var} werden nicht unterstützt. Die Verwendung von Hive-Variablen hat eine Ausnahme zur Folge.

Verwenden Sie stattdessen DECLARE VARIABLE, SET VARIABLE und SQL-Sitzungsvariablenverweise und Parametermarkierungen („?“ oder „:var“), um den Sitzungszustand zu deklarieren, zu ändern und auf den Sitzungszustand zu verweisen. In vielen Fällen können Sie auch die IDENTIFIER-Klausel verwenden, um Objektnamen zu parametrisieren.

Ausmusterung von input_file-Funktionen

Die Funktionen input_file_name(), input_file_block_length() und input_file_block_start() wurden ausgemustert. Von der Verwendung dieser Funktionen wird dringend abgeraten.

Verwenden Sie stattdessen die Spalte mit Dateimetadaten, um Dateimetadaten abzurufen.

Verhaltensänderungen

Die Version 2024.15 des serverlosen Computings enthält folgende Verhaltensänderungen:

  • Korrektur für unhex(hexStr): Bei Verwendung der unhex(hexStr)-Funktion wird „hexStr“ immer links auf ein ganzes Byte aufgefüllt. Zuvor wurde das erste halbe Byte von der unhex-Funktion ignoriert. Beispiel: unhex('ABC') erzeugt jetzt x'0ABC' anstatt x'BC'.
  • Automatisch generierte Spaltenaliase sind jetzt stabil: Wenn auf das Ergebnis eines Ausdrucks ohne einen benutzerseitig angegebenen Spaltenalias verwiesen wird, ist dieser automatisch generierte Alias jetzt stabil. Der neue Algorithmus führt möglicherweise zu einer Änderung der zuvor automatisch generierten Namen, die in Features wie materialisierten Sichten verwendet werden.
  • Tabellenüberprüfungen mit Feldern vom Typ CHAR werden jetzt immer aufgefüllt: Delta-Tabellen, bestimmte JDBC-Tabellen und externe Datenquellen speichern CHAR-Daten in nicht aufgefüllter Form. Beim Lesen werden die Daten von Databricks jetzt mit Leerzeichen auf die deklarierte Länge aufgefüllt, um eine korrekte Semantik sicherzustellen.
  • Umwandlungen von BIGINT/DECIMAL in TIMESTAMP lösen eine Ausnahme für überlaufende Werte aus: Databricks ermöglicht das Umwandeln von BIGINT und DECIMAL in TIMESTAMP, indem der Wert als Anzahl von Sekunden aus der Unix-Epoche behandelt wird. Zuvor wurden von Databricks überlaufende Werte zurückgeben. Nun wird jedoch im Falle eines Überlaufs eine Ausnahme ausgelöst. Verwenden Sie try_cast, um NULL anstelle einer Ausnahme zurückzugeben.
  • Die PySpark-UDF-Ausführung wurde verbessert, um exakt dem Verhalten der UDF-Ausführung beim Einzelbenutzercomputing zu entsprechen: Folgende Änderungen wurden vorgenommen:
    • Von UDFs mit einem Zeichenfolgenrückgabetyp werden nicht mehr implizit zeichenfolgenfremde Werte in Zeichenfolgen konvertiert. Zuvor wurde von UDFs mit dem Rückgabetyp str unabhängig vom tatsächlichen Datentyp des zurückgegebenen Werts ein str(..)-Wrapper auf das Ergebnis angewendet.
    • Von UDFs mit Rückgaben vom Typ timestamp werden keine Zeitzonenkonvertierung mehr auf Zeitstempel angewendet.

Systemumgebung

Serverloses Computing beinhaltet die folgende Systemumgebung:

  • Betriebssystem: Ubuntu 22.04.3 LTS
  • Python: 3.10.12
  • Delta Lake: 3.1.0

Installierte Python-Bibliotheken

Die folgenden Python-Bibliotheken werden standardmäßig auf serverlosem Computing installiert. Zusätzliche Abhängigkeiten können mithilfe des Seitenbereichs Umgebung installiert werden. Weitere Informationen finden Sie unter Installieren von Notebookabhängigkeiten.

Bibliothek Version Bibliothek Version Bibliothek Version
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 22.6.0
bleach 4.1.0 blinker 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
Klicken 8.0.4 comm 0.1.2 contourpy 1.0.5
cryptography 39.0.1 cycler 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 decorator 5.1.1 defusedxml 0.7.1
distlib 0.3.8 docstring-to-markdown 0,11 entrypoints 0,4
executing 0.8.3 facets-overview 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 grpcio-status 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
matplotlib-inline 0.1.6 mccabe 0.7.0 mistune 0.8.4
more-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 Notebook 6.5.2
notebook_shim 0.2.2 numpy 1.23.5 oauthlib 3.2.0
Packen 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 Pillow 9.4.0
pip 22.3.1 platformdirs 2.5.2 plotly 5.9.0
pluggy 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 pyrsistent 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
requests 2.28.1 rope 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 sechs 1.16.0 sniffio 1.2.0
soupsieve 2.3.2.post1 ssh-import-id 5.11 stack-data 0.2.0
statsmodels 0.13.5 tenacity 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 traitlets 5.7.1
typing_extensions 4.4.0 ujson 5.4.0 unattended-upgrades 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 wheel 0.38.4 widgetsnbextension 3.6.1
yapf 0.33.0 Zipp 1.0.0