注释
本文探讨适用于 Databricks Runtime 14.0 及以上版本的 Databricks Connect。
本文介绍超越 Databricks Connect 的基本设置的主题。
配置 Spark Connect 连接字符串
除了使用 “配置与群集的连接”中所述的选项连接到群集之外,更高级的选项是使用 Spark Connect 连接字符串进行连接。 可以在函数中 remote 传递字符串或设置 SPARK_REMOTE 环境变量。
注释
只能使用 Databricks 个人访问令牌身份验证 通过 Spark Connect 连接字符串进行连接。
Python
使用 remote 函数设置连接字符串:
from databricks.connect import DatabricksSession
workspace_instance_name = retrieve_workspace_instance_name()
token = retrieve_token()
cluster_id = retrieve_cluster_id()
spark = DatabricksSession.builder.remote(
f"sc://{workspace_instance_name}:443/;token={token};x-databricks-cluster-id={cluster_id}"
).getOrCreate()
或者,设置 SPARK_REMOTE 环境变量:
sc://<workspace-instance-name>:443/;token=<access-token-value>;x-databricks-cluster-id=<cluster-id>
然后初始化 DatabricksSession 类:
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.getOrCreate()
Scala
SPARK_REMOTE设置环境变量:
sc://<workspace-instance-name>:443/;token=<access-token-value>;x-databricks-cluster-id=<cluster-id>
然后初始化 DatabricksSession 类:
import com.databricks.connect.DatabricksSession
val spark = DatabricksSession.builder.getOrCreate()
将 Spark Connect 服务器与 Databricks Connect 配合使用
可以选择性地运行 Databricks Connect,并连接开源 Spark Connect 服务器。
重要
Databricks Runtime 和 Databricks Connect 中提供的某些功能专用于 Databricks,或者尚未在开源 Apache Spark 中发布。 如果代码依赖于这些功能,则以下步骤可能会失败并出现错误。
启动本地 Spark Connect 服务器。 请参阅 如何使用 Spark Connect
配置 Databricks Connect。 将环境变量
SPARK_REMOTE设置为指向本地 Spark Connect 服务器。 请参阅 使用客户端连接到 Spark Connect。export SPARK_REMOTE="sc://localhost"初始化 Databricks 会话:
Python
from databricks.connect import DatabricksSession spark = DatabricksSession.builder.getOrCreate()Scala
import com.databricks.connect.DatabricksSession val spark = DatabricksSession.builder.getOrCreate()
其他 HTTP 标头
Databricks Connect 通过 HTTP/2 通过 gRPC 与 Databricks 群集通信。
为了更好地控制来自客户端的请求,高级用户可以选择在客户端和 Azure Databricks 群集之间安装代理服务。 在某些情况下,代理可能需要 HTTP 请求中的自定义标头。
使用 header() 方法将自定义标头添加到 HTTP 请求:
Python
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.header('x-custom-header', 'value').getOrCreate()
Scala
import com.databricks.connect.DatabricksSession
val spark = DatabricksSession.builder.header("x-custom-header", "value").getOrCreate()
证书
如果群集依赖于自定义 SSL/TLS 证书来解析 Azure Databricks 工作区完全限定的域名(FQDN),则必须在本地开发计算机上设置环境变量 GRPC_DEFAULT_SSL_ROOTS_FILE_PATH 。 此环境变量必须设置为群集上已安装证书的完整路径。
Python
以下示例设置此环境变量:
import os
os.environ["GRPC_DEFAULT_SSL_ROOTS_FILE_PATH"] = "/etc/ssl/certs/ca-bundle.crt"
有关设置环境变量的其他方法,请参阅作系统的文档。
Scala
Java 和 Scala 不提供以编程方式配置环境变量的方法。 请参阅您的操作系统或 IDE 文档,以获取有关如何将其配置为应用程序一部分的信息。
日志记录和调试日志
Python
用于 Python 的 Databricks Connect 使用标准 Python 日志记录生成日志。
日志将发送到标准错误流(stderr),默认情况下它们处于关闭状态。
设置环境变量 SPARK_CONNECT_LOG_LEVEL=debug 将修改此默认设置,并打印 DEBUG 级别及更高级别的所有日志消息。
Scala
用于 Scala 的 Databricks Connect 使用 SLF4J 日志记录,并且不随任何 SLF4J 提供程序一起提供。
使用 Databricks Connect 的应用程序预期应包括一个 SLF4J 提供程序,并在某些情况下被配置为打印日志消息。
- 最简单的选项是包括 slf4j-simple 提供程序 ,该提供程序将日志消息输出到
INFO级别和更高级别的标准错误流(stderr)。 - 更可配置的替代方法是使用 slf4j-reload4j 提供程序 ,该提供程序从
log4j.properties类路径中的文件选取配置。
以下示例演示了一个简单的 log4j.properties 文件。
log4j.rootLogger=INFO,stderr
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%p\t%d{ISO8601}\t%r\t%c\t[%t]\t%m%n
如果根记录器(或特定记录器)配置为 DEBUG 级别,则会输出调试日志。
log4j.rootLogger=DEBUG,stderr