Catatan rilis komputasi tanpa server
Artikel ini menjelaskan fitur dan perilaku yang saat ini tersedia dan akan datang pada komputasi tanpa server untuk buku catatan dan pekerjaan.
Untuk informasi selengkapnya tentang komputasi tanpa server, lihat Menyambungkan ke komputasi tanpa server.
Databricks secara berkala merilis pembaruan untuk komputasi tanpa server, secara otomatis meningkatkan runtime komputasi tanpa server untuk mendukung peningkatan dan peningkatan ke platform. Semua pengguna mendapatkan pembaruan yang sama, diluncurkan dalam waktu singkat.
Perubahan perilaku yang akan datang
Bagian ini menyoroti perubahan perilaku yang datang dalam versi komputasi tanpa server berikutnya. Ketika perubahan didorong ke produksi, perubahan akan ditambahkan ke catatan rilis.
September 2024
Perubahan pengikatan skema untuk tampilan
Ketika tipe data dalam perubahan kueri yang mendasar tampilan dari yang digunakan saat tampilan pertama kali dibuat, Databricks tidak akan lagi melemparkan kesalahan untuk referensi ke tampilan ketika tidak ada pemeran aman yang dapat dilakukan. Sebagai gantinya tampilan akan mengkompensasi menggunakan aturan transmisi reguler jika memungkinkan.
Perubahan ini memungkinkan Databricks untuk mentolerir perubahan skema tabel dengan lebih mudah.
Melarang toleransi sintaks yang tidak terdokumentasi !
untuk NOT
logika boolean luar
Databricks tidak akan lagi mentolerir penggunaan !
sebagai sinonim untuk NOT
di luar logika boolean. Contohnya:
CREATE ... IF ! EXISTS
, IS ! NULL, ! NULL
properti kolom atau bidang, ! IN
dan ! BETWEEN harus diganti dengan:
CREATE ... IF NOT EXISTS
, IS NOT NULL
properti NOT NULL
kolom atau bidang, NOT IN
dan NOT BETWEEN
.
Perubahan ini mengurangi kebingungan, selaras dengan standar SQL, dan membuat SQL lebih portabel.
Operator !
awalan boolean (misalnya !is_mgr
atau !(true AND false)
) tidak terpengaruh oleh perubahan ini.
Melarang bagian sintaks definisi kolom yang tidak terdokumentasi dan tidak diolah dalam tampilan
Databricks mendukung CREATE VIEW dengan kolom dan komentar kolom bernama.
Spesifikasi jenis kolom, NOT NULL
batasan, atau DEFAULT
telah ditoleransi dalam sintaks tanpa memiliki efek apa pun.
Databricks akan menghapus toleransi sintaks ini.
Melakukannya mengurangi kebingungan, selaras dengan standar SQL, dan memungkinkan peningkatan di masa mendatang.
Catatan rilis
Bagian ini mencakup catatan rilis untuk komputasi tanpa server. Catatan rilis diatur menurut tahun dan minggu dalam setahun. Komputasi tanpa server selalu berjalan menggunakan versi terbaru yang tercantum di sini.
JDK ditingkatkan dari JDK 8 ke JDK 17
15 Agustus 2024
Komputasi tanpa server untuk notebook dan alur kerja telah dimigrasikan dari Java Development Kit (JDK) 8 ke JDK 17 di sisi server. Peningkatan ini mencakup perubahan perilaku berikut:
Perbaikan bug
Penguraian pola regex yang benar dengan negasi dalam pengelompokan karakter berlapis: Dengan peningkatan ini, Azure Databricks sekarang mendukung penguraian pola regex yang benar dengan negasi dalam pengelompokan karakter berlapis. Misalnya, [^[abc]]
akan diuraikan sebagai "karakter apa pun yang BUKAN salah satu 'abc'".
Selain itu, perilaku Photon tidak konsisten dengan Spark untuk kelas karakter berlapis. Pola regex yang berisi kelas karakter berlapis tidak akan lagi menggunakan Photon, dan sebaliknya akan menggunakan Spark. Kelas karakter berlapis adalah pola apa pun yang berisi tanda kurung siku dalam tanda kurung siku, seperti [[a-c][1-3]]
.
Versi 2024.30
23 Juli 2024
Rilis komputasi tanpa server ini kira-kira sesuai dengan Databricks Runtime 15.1
Fitur baru
Dukungan untuk sintaks bintang (*
) dalam WHERE
klausa: Anda sekarang dapat menggunakan sintaks bintang (*
) dalam WHERE
klausa untuk mereferensikan semua kolom dari SELECT
daftar.
Contohnya,SELECT * FROM VALUES(1, 2) AS T(a1, a2) WHERE 1 IN(T.*)
.
Perubahan
Pemulihan kesalahan yang ditingkatkan untuk penguraian JSON: Pengurai JSON yang digunakan untuk from_json()
dan ekspresi jalur JSON sekarang pulih lebih cepat dari sintaksis cacat, yang mengakibatkan lebih sedikit kehilangan data.
Saat mengalami sintaks JSON yang salah bentuk dalam bidang struct, nilai array, kunci peta, atau nilai peta, pengurai JSON sekarang akan mengembalikan NULL
hanya untuk bidang, kunci, atau elemen yang tidak dapat dibaca. Bidang, kunci, atau elemen berikutnya akan diurai dengan benar. Sebelum perubahan ini, pengurai JSON meninggalkan penguraian array, struktur, atau peta dan dikembalikan NULL
untuk konten yang tersisa.
Versi 2024.15
15 April 2024
Ini adalah versi komputasi tanpa server awal. Versi ini kira-kira sesuai dengan Databricks Runtime 14.3 dengan beberapa modifikasi yang menghapus dukungan untuk beberapa fitur tanpa server dan warisan.
Parameter konfigurasi Spark yang didukung
Untuk mengotomatiskan konfigurasi Spark pada komputasi tanpa server, Databricks telah menghapus dukungan untuk mengatur sebagian besar konfigurasi Spark secara manual. Anda hanya dapat mengatur parameter konfigurasi Spark berikut secara manual:
spark.sql.legacy.timeParserPolicy
(Nilai defaultEXCEPTION
)spark.sql.session.timeZone
(Nilai defaultEtc/UTC
)spark.sql.shuffle.partitions
(Nilai defaultauto
)spark.sql.ansi.enabled
(Nilai defaulttrue
)
Pekerjaan yang berjalan pada komputasi tanpa server akan gagal jika Anda mengatur konfigurasi Spark yang tidak ada dalam daftar ini.
Untuk informasi selengkapnya tentang mengonfigurasi properti Spark, lihat Mengatur properti konfigurasi Spark di Azure Databricks.
Perintah CACHING API dan SQL tidak didukung
Penggunaan API cache Dataframe dan SQL tidak didukung. Menggunakan salah satu API atau perintah SQL ini akan menghasilkan pengecualian.
API yang tidak didukung:
- df.cache(), df.persist()
- df.unpersist()
- spark.catalog.cacheTable()
- spark.catalog.uncacheTable()
- spark.catalog.clearCache()
Perintah SQL yang tidak didukung:
Tampilan sementara global tidak didukung
Pembuatan tampilan sementara global tidak didukung. Menggunakan salah satu perintah ini akan menghasilkan pengecualian:
Sebagai gantinya, Databricks merekomendasikan penggunaan tampilan sementara sesi atau membuat tabel di mana data lintas sesi diperlukan.
CREATE FUNCTION (Eksternal) tidak didukung
Perintah CREATE FUNCTION (External) tidak didukung. Menggunakan perintah ini menghasilkan pengecualian.
Sebagai gantinya, Databricks merekomendasikan penggunaan CREATE FUNCTION (SQL dan Python) untuk membuat UDF.
Tabel Apache Hive SerDe tidak didukung
Tabel Apache Hive SerDe tidak didukung. Selain itu, perintah LOAD DATA yang sesuai yang memuat data ke dalam tabel Apache Hive SerDe tidak didukung. Menggunakan perintah akan menghasilkan pengecualian.
Dukungan untuk sumber data terbatas pada AVRO, BINARYFILE, CSV, DELTA, JSON, KAFKA, ORC, PARQUET, ORC, TEXT, dan XML.
Variabel Apache Hive tidak didukung
Variabel Apache Hive (misalnya ${env:var}
, , ${configName}
, ${system:var}
dan spark.sql.variable
) atau referensi variabel konfigurasi menggunakan ${var}
sintaks tidak didukung. Menggunakan variabel Apache Hive akan menghasilkan pengecualian.
Sebagai gantinya, gunakan VARIABEL DECLARE, SET VARIABEL, dan referensi variabel sesi SQL dan penanda parameter ('?', atau ':var') untuk mendeklarasikan, memodifikasi, dan mereferensikan status sesi. Anda juga dapat menggunakan klausul IDENTIFIER untuk membuat parameter nama objek dalam banyak kasus.
fungsi input_file tidak digunakan lagi
Fungsi input_file_name(), input_file_block_length(), dan input_file_block_start() tidak digunakan lagi. Menggunakan fungsi-fungsi ini sangat tidak disarankan.
Sebagai gantinya , gunakan kolom metadata file untuk mengambil informasi metadata file.
Perubahan perilaku
Komputasi tanpa server versi 2024.15 menyertakan perubahan perilaku berikut:
- perbaikan bug unhex(hexStr): Saat menggunakan
unhex(hexStr)
fungsi , hexStr selalu diisi kiri ke seluruh byte. Sebelumnya fungsi unhex mengabaikan byte paruh pertama. Misalnya:unhex('ABC')
sekarang menghasilkan alih-alihx'0ABC'
x'BC'
. - Alias kolom yang dihasilkan secara otomatis sekarang stabil: Ketika hasil ekspresi direferensikan tanpa alias kolom yang ditentukan pengguna, alias yang dihasilkan otomatis ini sekarang akan stabil. Algoritma baru dapat mengakibatkan perubahan pada nama yang dihasilkan secara otomatis sebelumnya yang digunakan dalam fitur seperti tampilan materialisasi.
- Pemindaian tabel dengan
CHAR
bidang jenis sekarang selalu diisi: Tabel delta, tabel JDBC tertentu, dan sumber data eksternal menyimpan data CHAR dalam bentuk non-padded. Saat membaca, Databricks sekarang akan mengaitkan data dengan spasi ke panjang yang dinyatakan untuk memastikan semantik yang benar. - Transmisi dari BIGINT/DECIMAL ke TIMESTAMP memberikan pengecualian untuk nilai luapan: Databricks memungkinkan transmisi dari BIGINT dan DESIMAL ke TIMESTAMP dengan memperlakukan nilai sebagai jumlah detik dari epoch Unix. Sebelumnya, Databricks akan mengembalikan nilai yang meluap tetapi sekarang melemparkan pengecualian dalam kasus luapan. Gunakan
try_cast
untuk mengembalikan NULL alih-alih pengecualian. - Eksekusi PySpark UDF telah ditingkatkan agar sesuai dengan perilaku eksekusi UDF yang tepat pada komputasi pengguna tunggal: Perubahan berikut telah dilakukan:
- UDF dengan jenis pengembalian string tidak lagi secara implisit mengonversi nilai non-string menjadi string. Sebelumnya, UDF dengan jenis
str
pengembalian akan menerapkanstr(..)
pembungkus ke hasil terlepas dari jenis data aktual dari nilai yang dikembalikan. - UDF dengan
timestamp
jenis pengembalian tidak lagi secara implisit menerapkan konversi zona waktu ke tanda waktu.
- UDF dengan jenis pengembalian string tidak lagi secara implisit mengonversi nilai non-string menjadi string. Sebelumnya, UDF dengan jenis
Lingkungan sistem
Komputasi tanpa server mencakup lingkungan sistem berikut:
- Sistem Operasi: Ubuntu 22.04.3 LTS
- Python: 3.10.12
- Danau Delta: 3.1.0
Pustaka Python yang diinstal
Pustaka Python berikut diinstal pada komputasi tanpa server secara default. Dependensi tambahan dapat diinstal menggunakan panel sisi Lingkungan . Lihat Menginstal dependensi buku catatan.
Pustaka | Versi | Pustaka | Versi | Pustaka | Versi |
---|---|---|---|---|---|
anyio | 3.5.0 | argon2-cffi | 21.3.0 | argon2-cffi-bindings | 21.2.0 |
asttoken | 2.0.5 | astunparse | 1.6.3 | attrs | 22.1.0 |
backcall | 0.2.0 | beautifulsoup4 | 4.11.1 | hitam | 22.6.0 |
pemutih | 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 |
klik | 8.0.4 | komunikasi | 0.1.2 | konturpy | 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 | titik masuk | 0,4 |
menjalankan | 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 | ekstensi mypy | 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 | buku catatan | 6.5.2 |
notebook_shim | 0.2.2 | numpy | 1.23.5 | oauthlib | 3.2.0 |
packaging | 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 | 4.8.0 | pickleshare | 0.7.5 | Pillow | 9.4.0 |
pip | 22.3.1 | platformdir | 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-modul | 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 |
permintaan | 2.28.1 | tali | 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 | six | 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.0.5 | 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 | 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 |