此頁面包含標準計算的需求和限制清單。 如果您使用傳統計算,Databricks 建議您使用標準存取模式,除非您的工作負載相依於下列其中一個限制。
這很重要
Init 指令碼和程式庫在存取模式和 Databricks 執行時間版本之間有不同的支援。 請參閱 init 腳本可以安裝在哪裡? 和 計算範圍程式庫。
目前的標準計算限制
下列各節列出以最新 Databricks Runtime 版本為基礎的標準計算限制。 如需適用於舊版 Databricks Runtime 版本的限制,請參閱 運行時間相依限制。
如果您的工作負載需要這些功能,請改用 專用運算 。
一般標準計算限制
- 不支援適用於 ML 的 Databricks Runtime。 相反地,請將任何未與 Databricks Runtime 套件捆綁的機器學習程式庫安裝為計算範圍限定的程式庫。
- 不支援啟用 GPU 的運算。
- 不支援 Spark-submit 任務。 改用 JAR 工作。
- DBUtils 和其他用戶端只能使用 外部位置從雲端儲存體讀取。
- DBFS 根目錄和掛接不支援 FUSE。
語言限制
- 不支援 R。
Spark API 限制
- Spark 上下文(
sc)、spark.sparkContext、以及sqlContext均不支援 Scala:- Azure Databricks 建議使用
spark變數來與SparkSession執行個體互動。 - 也不支援下列
sc函式:emptyRDD、range、init_batched_serializer、parallelize、pickleFile、textFile、wholeTextFiles、binaryFiles、binaryRecords、sequenceFile、newAPIHadoopFile、newAPIHadoopRDD、hadoopFile、hadoopRDD、union、runJob、setSystemProperty、uiWebUrl、stop、setJobGroup、setLocalProperty、getConf。
- Azure Databricks 建議使用
- 不支援設定某些 Spark 設定 屬性。 建立或編輯設定受限屬性的叢集會因錯誤而失敗。 完整清單請參見 Spark 配置限制。
- 使用
spark.createDataFrame從本機資料建立 DataFrame 時,資料列大小不能超過 128MB。 - 不支援 RDD API。
- Spark Connect 用於較新版本的 Databricks Runtime ,會將分析和名稱解析延遲至執行時間,這可能會變更程式碼的行為。 請參閱 比較 Spark Connect 與 Spark Classic。
UDF 限制
- 不支援 Hive 使用者自訂函式(UDF)。 相反地,請在 Unity 目錄中使用 UDF。
- Scala UDF 無法用於 高階函式中。
串流限制
備註
某些列出的 Kafka 選項用於 Azure Databricks 上受支援的設定時,支援有限。 所有列出的 Kafka 限制都適用於批次和串流處理。 請參見 《Connect to Apache Kafka》。
- 不支援使用socket作為來源。
- 當您使用 Unity Catalog 管理的數據源與
sourceArchiveDir搭配時,option("cleanSource", "archive")必須位於與來源相同的外部存儲位置。 - 對於 Kafka 來源和匯出,下列選項不受支援:
kafka.sasl.client.callback.handler.classkafka.sasl.login.callback.handler.classkafka.sasl.login.classkafka.partition.assignment.strategy
- Python
foreachBatch不支援ThreadPoolExecutor或多執行緒執行。 多執行緒執行可能不會丟出錯誤,但可能導致資料損壞或結果不一致。
網路和檔案系統限制
- 標準計算會以禁止存取檔案系統敏感部分的低權限使用者身分執行命令。
- 不支援 DBFS 的 POSIX 樣式路徑 (
/)。 - 只有具有 ANY FILE 許可權的工作區系統管理員和使用者可以使用 DBFS 直接與檔案互動。
- 您無法連線到實例中繼資料服務或 Azure WireServer。
環境變數限制
Spark 引擎與初始化腳本在標準計算中僅能使用預設的環境變數集合。 你在叢集上設定但不屬於此集合的環境變數,仍可供你的使用者程式碼使用(包括 UDF 在內),但 Spark 引擎或 init scripts 無法使用。
此集合包含常見的設定、憑證及執行時變數。 以下範例並非詳盡:
- 人脈與代理伺服器:
HTTP_PROXY,HTTPS_PROXY,NO_PROXY - TLS 證書:
REQUESTS_CA_BUNDLE,SSL_CERT_FILE - AWS 憑證與區域:
AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY,AWS_REGION,AWS_DEFAULT_REGION - Azure 認證:
AZURE_CLIENT_ID、AZURE_CLIENT_SECRET、AZURE_TENANT_ID - Google Cloud 憑證:
GOOGLE_APPLICATION_CREDENTIALS - Databricks 連線:
DATABRICKS_HOST,DATABRICKS_TOKEN - 地點與時區:
TZ,LANG,LC_ALL - 平行性與執行緒:
OMP_NUM_THREADS,OPENBLAS_NUM_THREADS,MKL_NUM_THREADS,NUMEXPR_NUM_THREADS - 可觀察性:
DD_API_KEY,DD_SITE,DD_ENV - Unity 目錄預設值為:
CATALOG,CATALOG_NAME
Scala 內核限制
在標準運算上使用 scala 核心時,會套用下列限制:
- 如果某些類別與內部杏仁核心連結庫發生衝突,則無法在程式碼中使用,尤其是
Input。 如需杏仁定義的進口清單,請參閱 杏仁進口。 - 不支援直接記錄至log4j。
- 在UI中,不支援資料框架架構下拉式清單。
- 如果您的驅動程序達到 OOM,Scala REPL 將不會終止。
-
//connector/sql-aws-connectors:sql-aws-connectors不在 Scala REPL 的 bazel 目標中,請使用ClassNotFoundException的結果。 - Scala 核心與 SQLImplicits 不相容。
執行期間依賴性限制
下列限制已透過執行階段更新解決,但如果您使用較舊的執行階段,則可能仍適用於您的工作負載。
語言支援
| 特徵 / 功能 | 必要的 Databricks Runtime 版本 |
|---|---|
| Scala | 13.3或以上 |
| 預設提供所有執行階段捆綁的 Java 和 Scala 函式庫 | 15.4 LTS 或以上 (15.3 或以下,設定 spark.databricks.scala.kernel.fullClasspath.enabled=true) |
Spark API 支援
| 特徵 / 功能 | 必要的 Databricks Runtime 版本 |
|---|---|
| Spark ML | 17.0或以上 |
Python:SparkContext (sc), spark.sparkContext, sqlContext |
14.0或以上 |
Scala Dataset 運算符:map、mapPartitions、foreachPartition、flatMap、reduce、filter |
15.4 LTS 或以上 |
UDF 支援
| 特徵 / 功能 | 必要的 Databricks Runtime 版本 |
|---|---|
applyInPandas、mapInPandas |
14.3 LTS 或以上 |
| Scala 純量 UDF 和 Scala UDAF | 14.3 LTS 或以上 |
| 從 PySpark UDF 中的 Git 資料夾、工作區檔案或磁碟區匯入模組 | 14.3 LTS 或以上 |
在 PySpark UDF 中,透過筆記本或計算範圍的程式庫使用grpc、pyarrow或protobuf的自訂版本。 |
14.3 LTS 或以上 |
| 非純量 Python 和 Pandas UDF,包括 Spark 上的 UDAF、UDTF 和 Pandas | 14.3 LTS 或以上 |
| Python 純量 UDF 和 Pandas UDF | 13.3 LTS 或以上 |
串流支援
| 特徵 / 功能 | 必要的 Databricks Runtime 版本 |
|---|---|
transformWithStateInPandas |
16.3或以上 |
applyInPandasWithState |
14.3 LTS 或以上 |
斯卡拉 foreach |
16.1或以上 |
Scala foreachBatch 和 flatMapGroupsWithState |
16.2或以上 |
斯卡拉 from_avro |
14.2或以上 |
Kafka 選項 kafka.ssl.truststore.location 和 kafka.ssl.keystore.location (指定的位置必須是由 Unity 目錄管理的外部位置) |
13.3 LTS 或以上 |
斯卡拉 StreamingQueryListener |
16.1或以上 |
Python StreamingQueryListener 與 Unity 目錄受控物件互動 |
14.3 LTS 或以上 |
此外,針對 Python,foreachBatch 在 Databricks Runtime 14.0 及以上版本上有下列行為變更:
-
print()命令會將輸出寫入驅動程式記錄。 - 您無法存取函式內的
dbutils.widgets子模組。 - 函式中參考的任何檔案、模組或對象都必須可串行化,且可在 Spark 上使用。
網路和檔案系統支援
| 特徵 / 功能 | 必要的 Databricks Runtime 版本 |
|---|---|
| 連線至除 80 和 443 以外的其他連接埠 | 12.2 LTS 或以上 |
火花配置限制
在 Databricks Runtime 19 及以上版本中,你無法在標準存取模式下設定以下 Spark 設定屬性。 建立或編輯叢集時,如果設定了這些屬性中的任何一項,或設定了以所列前綴之一開頭的屬性(這些前綴會以結尾的 .* 標示),都會失敗並顯示錯誤。 升級前,請從叢集設定、運算政策和工作定義中移除這些屬性。
| 類別 | 受限的 Spark 組態屬性 |
|---|---|
| JVM、類別路徑與原生函式庫選項 |
spark.driver.extraJavaOptions、spark.driver.defaultJavaOptions、spark.executor.extraJavaOptions、spark.executor.defaultJavaOptions、spark.yarn.am.extraJavaOptions、spark.yarn.am.defaultJavaOptions、spark.driver.extraClassPath、spark.executor.extraClassPath、spark.driver.extraLibraryPath、spark.executor.extraLibraryPath |
| 環境變數注入 |
spark.executorEnv.*、spark.yarn.appMasterEnv.*、spark.kubernetes.driverEnv.* |
| 函式庫、JARs與檔案 |
spark.jars、spark.jars.packages、spark.jars.ivy、spark.jars.ivySettings、spark.jars.repositories、spark.files、spark.archives、spark.submit.pyFiles、spark.sql.maven.additionalRemoteRepositories、spark.yarn.jars、spark.yarn.archive、spark.yarn.dist.jars、spark.yarn.dist.files、spark.yarn.dist.archives、spark.yarn.dist.pyFiles、spark.yarn.dist.forceDownloadSchemes |
| Hive 中繼存放區 JAR 檔案 |
spark.sql.hive.metastore.jars、spark.sql.hive.metastore.jars.path |
| Python 與 R 執行檔 |
spark.pyspark.python、、 spark.pyspark.driver.python、 spark.r.command、 spark.r.driver.command、 spark.r.shell.command |
| Kubernetes Pod 配置 |
spark.kubernetes.container.image、spark.kubernetes.driver.container.image、spark.kubernetes.executor.container.image、spark.kubernetes.driver.podTemplateFile、spark.kubernetes.executor.podTemplateFile、spark.kubernetes.driver.volumes.*、spark.kubernetes.executor.volumes.*、spark.kubernetes.driver.secrets.*、spark.kubernetes.executor.secrets.* |
| 本地檔案系統存取 |
spark.connect.copyFromLocalToFs.allowDestLocal、spark.sql.artifact.copyFromLocalToFs.allowDestLocal |
| Azure Databricks 隔離與存取控制 |
spark.databricks.pyspark.enableProcessIsolation、spark.databricks.pyspark.enablePy4JSecurity、spark.databricks.pyspark.runAsLowPrivilegeUser、spark.databricks.pyspark.enableIptables、spark.databricks.pyspark.onlyAllowTrustedFilesystems、spark.databricks.pyspark.trustedFilesystems、spark.databricks.pyspark.pythonUdfsOnly、spark.databricks.acl.dfAclsEnabled、spark.databricks.acl.fileAccess.enabled、spark.databricks.acl.allowTransformUsing、spark.databricks.passthrough.enabled、spark.databricks.runtimeConfigAllowlist.enabled、spark.databricks.runtimeConfigAllowlist.extraConfs、spark.testing.databricks.runtimeConfigAllowlist.enabled、spark.databricks.sql.jdbc.enableLakeguardDriver |