無伺服器計算版本資訊
本文說明筆記本和作業目前可用且即將推出的無伺服器計算功能與行為。
有關無伺服器計算的詳細資訊,請參閱連線至無伺服器計算。
Azure Databricks 會定期發行無伺服器計算的更新,自動升級無伺服器計算運行時間,以支持增強功能和升級至平臺。 所有使用者都會取得相同的更新,並會在短時間內推出。
無伺服器用戶端映像
適用於筆記本和作業的 Databricks 無伺服器計算具有 Spark Connect 架構,可啟用獨立引擎升級,而不會影響應用程式。 為了確保應用程式相容性,無伺服器工作負載會使用稱為用戶端映像或用戶端的版本化 API,其仍與較新的伺服器版本相容。
最新的用戶端映像會繼續接收更新,直到發行新的用戶端映像為止。 使用者可以從下列任何支援的用戶端映像中選取:
版本資訊
本節包含無伺服器計算的版本資訊。 版本資訊會依年份和一周組織。 無伺服器計算一律會使用此處所列的最新發行版本執行。
版本 2024.43
2024 年 10 月 28 日
此無伺服器計算版本大致對應至 Databricks Runtime 15.4
新功能
- UTF-8 驗證函式:此版本引進下列函式來驗證 UTF-8 字串:
- is_valid_utf8 驗證字串是否為有效的 UTF-8 字串。
- make_valid_utf8使用替代字元,將可能無效的UTF-8字串轉換成有效的UTF-8字串。
- 如果輸入不是有效的 UTF-8 字串,validate_utf8 會引發錯誤。
- 如果輸入不是有效的 UTF-8 字串,try_validate_utf8 會傳回
NULL
。
- 使用 ALTER TABLE 啟用 UniForm Iceberg: 您現在可以在現有的數據表上啟用 UniForm Iceberg,而不需要重寫數據檔。 請參閱<藉由變更現有的資料表啟用>。
- try_url_decode函式: 此版本引進 try_url_decode 函式,其會譯碼 URL 編碼的字串。 如果字串的格式不正確,函式會傳回
NULL
而不是引發錯誤。 - 選擇性地允許優化器依賴非強制外鍵條件約束:若要改善查詢效能,您現在可以在 CREATE 或 ALTER 數據表時指定條件約束的
RELY
FOREIGN KEY
關鍵詞。 - 針對選擇性覆寫執行平行處理作業: 選擇性覆寫現在會使用
replaceWhere
執行作業來刪除數據,並平行插入新數據,以改善查詢效能和叢集使用率。 - 已改善具有選擇性覆寫之變更數據摘要的效能: 在具有變更數據摘要的數據表上使用選擇性
replaceWhere
覆寫,不再針對插入的數據寫入個別的變更數據檔。 這些作業會使用存在於基礎 Parquet 資料檔中的隱藏_change_type
欄以記錄變更,而不進行寫入放大。 - 改善命令的
COPY INTO
查詢延遲: 此版本包含可改善命令查詢延遲的COPY INTO
變更。 本次改善是藉由讓 RocksDB 狀態儲存區以非同步方式載入狀態所實施。 藉由這項變更的協助,您應該會看到有大型狀態的查詢在開始時間方面有所改善,例如具有大量已內嵌檔案的查詢。 - 支援卸除檢查條件約束數據表功能:您現在可以使用
ALTER TABLE table_name DROP FEATURE checkConstraints
從 Delta 數據表卸除checkConstraints
數據表功能。 請參閱 停用檢查條件約束。
行為變更
檢視的架構系結變更: 當檢視基礎查詢中的數據類型從第一次建立檢視時所使用的數據類型變更時,當無法執行安全轉換時,Databricks 就不會再擲回檢視參考的錯誤。
不允許對布爾邏輯進行未記載的
!
語法:NOT
Databricks 將不再容許使用!
做為布爾邏輯外部同義字NOT
。 這項變更可減少混淆、與 SQL 標準一致,並讓 SQL 更具可攜性。 例如:CREATE ... IF ! EXISTS
, IS!NULL、! NULL
資料行或欄位屬性,! IN
以及 !BETWEEN 必須取代為:CREATE ... IF NOT EXISTS
、、NOT NULL
資料行或欄位屬性和NOT BETWEEN
NOT IN
IS NOT NULL
布爾前置詞運算子
!
(例如!is_mgr
或!(true AND false)
) 不受這項變更影響。不允許檢視中數據行定義語法的未記載和未處理部分: Databricks 支援 具有具名數據行和數據行批注的 CREATE VIEW 。
在語法中容許數據行類型、
NOT NULL
條件約束或DEFAULT
的規格,沒有任何作用。 Databricks 會移除此語法。 這樣做可減少混淆、與 SQL 標準一致,並允許未來的增強功能。Spark 和 Photon 中 Base64 譯碼的一致錯誤處理: 此版本會變更 Photon 如何處理 Base64 譯碼錯誤,以符合這些錯誤的 Spark 處理方式。 在這些變更之前,Photon 和 Spark 程式代碼產生路徑有時無法引發剖析例外狀況,而 Spark 解譯的執行則正確引發
IllegalArgumentException
或ConversionInvalidInputError
。 此更新可確保 Photon 在 Base64 譯碼錯誤期間一致引發與 Spark 相同的例外狀況,以提供更可預測的可靠錯誤處理。CHECK
在無效的數據行上新增條件約束現在會傳回UNRESOLVED_COLUMN。WITH_SUGGESTION錯誤類別:若要提供更實用的錯誤訊息,請在 Databricks Runtime 15.3 和更新版本中,ALTER TABLE ADD CONSTRAINT
包含CHECK
參考無效數據行名稱的條件約束的語句會傳回UNRESOLVED_COLUMN。 WITH_SUGGESTION錯誤類別。 先前已傳回INTERNAL_ERROR
。
JDK 從 JDK 8 升級至 JDK 17
2024 年 8 月 15 日
筆記本和工作流程的無伺服器計算已從伺服器端的 Java 開發工具包 (JDK) 8 移轉至 JDK 17。 此升級包含下列行為變更:
錯誤修正
在巢狀字元群組中使用否定來正確剖析 regex 模式:有了此升級,Azure Databricks 現在支援在巢狀字元群組中使用否定來正確剖析 regex 模式。 例如, [^[abc]]
會剖析為「任何不是 『abc』 字元」的字元。
此外,Photon 行為與巢狀字元類別的Spark不一致。 包含巢狀字元類別的 Regex 模式將不再使用 Photon,而是使用 Spark。 巢狀字元類別是包含方括弧內方括弧的任何模式,例如 [[a-c][1-3]]
。
15.1 版
2024 年 7 月 23 日
此無伺服器計算版本大致對應至 Databricks Runtime 15.1
新功能
支援 子句中的 star (*
) 語法:您現在可以在 子句中使用 star (*
) 語法WHERE
來參考清單中的所有數據行SELECT
。WHERE
例如: SELECT * FROM VALUES(1, 2) AS T(a1, a2) WHERE 1 IN(T.*)
。
變更
改善 JSON 剖析的錯誤復原:用於 from_json()
和 JSON 路徑表達式的 JSON 剖析器現在會更快從格式錯誤的語法復原,因而減少數據遺失。
在結構欄位、陣列值、對應索引鍵或對應值中遇到格式不正確的 JSON 語法時,JSON 剖析器現在只會針對無法讀取的欄位、索引鍵或元素傳回 NULL
。 後續欄位、索引鍵或專案將會正確剖析。 在此變更之前,JSON 剖析器已放棄剖析數位、結構或對應,並針對其餘內容傳 NULL
回。
14.3 版
2024 年 4 月 15 日
這是初始無伺服器計算版本。 此版本大致對應至 Databricks Runtime 14.3 ,並進行了一些修改,可移除某些非無伺服器和舊版功能的支援。
支援的Spark組態參數
為了自動設定無伺服器計算上的Spark,Azure Databricks 已移除手動設定大部分Spark組態的支援。 您只能手動設定下列 Spark 組態參數:
spark.sql.legacy.timeParserPolicy
(預設值為CORRECTED
)spark.sql.session.timeZone
(預設值為Etc/UTC
)spark.sql.shuffle.partitions
(預設值為auto
)spark.sql.ansi.enabled
(預設值為true
)
如果您在無伺服器計算上執行作業,如果您設定不在這份清單中的Spark組態,將會失敗。
如需設定 Spark 屬性的詳細資訊,請參閱 在 Azure Databricks 上設定 Spark 組態屬性。
input_file函式已被取代
input_file_name()、input_file_block_length()和input_file_block_start() 函式已被取代。 強烈建議您不要使用這些函式。
請改用檔案 元數據數據行 來擷取檔案元數據資訊。
行為變更
無伺服器計算 2024.15 版包含下列行為變更:
- unhex(hexStr) 錯誤修正: 使用 函
unhex(hexStr)
式時,hexStr 一律會填補到整個位元組。 先前 unhex 函式忽略了前半位元組。 例如:unhex('ABC')
現在會產生x'0ABC'
而不是x'BC'
。 - 自動產生的數據行別名現在穩定: 在沒有使用者指定的數據行別名的情況下參考表達式的結果時,此自動產生的別名現在會穩定。 新的演算法可能會導致變更先前自動產生的名稱,例如具體化檢視等功能。
- 具有
CHAR
類型欄位的數據表掃描現在一律會填補: 差異數據表、特定 JDBC 資料表和外部數據源會將 CHAR 資料儲存在非填補格式。 讀取時,Azure Databricks 現在會將空格填補到宣告長度的數據,以確保正確的語意。 - 從 BIGINT/DECIMAL 轉換成 TIMESTAMP 會針對溢位值擲回例外狀況: Azure Databricks 允許將此值視為 Unix epoch 的秒數,從 BIGINT 和 DECIMAL 轉換成 TIMESTAMP。 先前,Azure Databricks 會傳回溢位的值,但現在會在溢位的情況下擲回例外狀況。 使用
try_cast
傳回 NULL,而不是例外狀況。 - 已改善 PySpark UDF 執行,以符合單一使用者計算上 UDF 執行的確切行為: 已進行下列變更:
- 具有字串傳回類型的UDF不再隱含地將非字串值轉換成字串。 先前,具有傳回型別的
str
UDF 會將包裝函式套用str(..)
至結果,而不論傳回值的實際數據類型為何。 - 傳
timestamp
回類型的 UDF 不再隱含地將時區轉換套用至時間戳。
- 具有字串傳回類型的UDF不再隱含地將非字串值轉換成字串。 先前,具有傳回型別的