標準運算需求和限制

此頁面包含標準計算的需求和限制清單。 如果您使用傳統計算,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。
  • 不支援設定某些 Spark 設定 屬性。 建立或編輯設定受限屬性的叢集會因錯誤而失敗。 完整清單請參見 Spark 配置限制。
  • 使用 spark.createDataFrame從本機資料建立 DataFrame 時,資料列大小不能超過 128MB。
  • 不支援 RDD API。
  • Spark Connect 用於較新版本的 Databricks Runtime ,會將分析和名稱解析延遲至執行時間,這可能會變更程式碼的行為。 請參閱 比較 Spark Connect 與 Spark Classic。

UDF 限制

串流限制

備註

某些列出的 Kafka 選項用於 Azure Databricks 上受支援的設定時,支援有限。 所有列出的 Kafka 限制都適用於批次和串流處理。 請參見 《Connect to Apache Kafka》。

  • 不支援使用socket作為來源。
  • 當您使用 Unity Catalog 管理的數據源與 sourceArchiveDir 搭配時,option("cleanSource", "archive") 必須位於與來源相同的外部存儲位置。
  • 對於 Kafka 來源和匯出,下列選項不受支援:
    • kafka.sasl.client.callback.handler.class
    • kafka.sasl.login.callback.handler.class
    • kafka.sasl.login.class
    • kafka.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