开始
加载和管理数据
处理数据
政府
引用和资源
2023年8月1日更新
给我们反馈
请注意
本文将介绍砖砖运行13.0和更高版本的连接。
学习如何快速开始使用砖砖运行时连接13.0和更高版本,看看砖连接。
对砖连接砖之前运行时版本的信息,明白了砖砖运行时的12.2 LTS和较低的连接。
砖允许您连接到连接等流行的ide Visual Studio代码和PyCharm,笔记本电脑服务器和其他自定义应用程序数据砖集群。
本文阐述了砖连接是如何工作的,走你通过与砖的步骤开始连接,并解释了如何使用砖连接时解决了可能出现的问题。
砖砖运行时连接是一个客户端库。它允许您使用火花api编写工作和远程数据砖集群上运行它们,而不是在当地引发会话。
例如,当您运行DataFrame命令spark.read.format (…) .load (…) .groupBy (…) .agg(…),告诉()使用砖连接的逻辑表示命令发送到服务器运行在砖火花远程集群上执行。
spark.read.format (…) .load (…) .groupBy (…) .agg(…),告诉()
砖连接,您可以:
运行大型火花从任何Python应用程序工作。任何你可以进口pyspark现在,您可以运行火花工作直接从您的应用程序,而不需要安装任何IDE插件或使用火花提交脚本。
进口pyspark
砖砖运行时连接13.0和更高版本目前仅支持运行Python应用程序。
单步调试和调试代码在IDE甚至在处理远程集群。
快速迭代开发库。你不需要重新启动集群在砖连接改变Python库依赖关系之后,因为每个客户端会话集群中是相互孤立的。
关闭闲置集群没有失去工作。因为客户端应用程序是与集群脱钩,这是影响集群重启或升级,这通常会导致你失去所有的变量,抽样和DataFrame对象定义在一个笔记本上。
砖运行时的13.0和更高版本,砖连接现在建立在开源引发连接。火花连接为Apache火花,引入了一个解耦的客户机-服务器体系结构允许远程连接火花集群使用DataFrame API和未解决的逻辑计划协议。与这种“V2”架构基于火花连接,砖连接成为一个简单易用的瘦客户机。火花到处都可以嵌入连接连接到砖:在ide中,笔记本电脑,和应用程序,允许个人用户和合作伙伴建立新的基于砖Lakehouse(互动)的用户体验。bob体育外网下载关于火花连接的更多信息,请参阅引入火花连接。
本节列出了砖的要求连接。
砖工作区和其相应的账户为统一启用目录。看到开始使用统一目录和为统一启用一个工作区目录。
砖的集群运行时安装13.0或更高版本。
只有兼容统一目录支持集群。其中包括集群分配或共享访问模式。看到集群访问模式是什么?。
你必须在你的开发机器上安装Python 3,和你的客户的小版本的Python安装必须一样的小砖集群的Python版本。下面的表显示了与每个砖安装Python版本运行时。
砖的运行时版本的
Python版本
13.2毫升,13.2
3.10
13.1毫升,13.1
13.0毫升,13.0
如果你想使用PySpark udf,重要的是您的开发机器的小版本的Python安装匹配的小版本的Python附带砖在集群上运行时安装。
砖强烈建议你有一个Python虚拟环境为每个Python版本激活与砖连接使用。Python虚拟环境帮助确保您使用正确的版本的Python和砖连接在一起。这可以帮助减少或缩短解决相关技术问题。
例如,如果您正在使用venv开发机器和集群上运行Python 3.10中,您必须创建一个venv环境的版本。下面的示例命令生成脚本激活venv环境与Python 3.10,然后这个命令这些脚本在一个隐藏文件夹命名的地方.venv在当前工作目录:
venv
.venv
# Linux和macOSpython3.10 - m venv。/ .venv#窗口python3.10 - m venv。\。venv
使用这些脚本激活venv环境,看到venvs如何工作。
砖连接主要和次要的包的版本应该匹配您的砖运行时版本。砖建议你总是使用最新的包砖连接相匹配你的砖的运行时版本。例如,当你使用一个砖13.1集群运行时,您还应该使用databricks-connect = = 13.1 . *包中。
databricks-connect = = 13.1 . *
看到砖连接的发布说明可用数据砖连接的列表发布和维护更新。
使用最新的包砖连接相匹配你的砖的运行时版本并不是一个要求。13.0砖开始运行时,您可以使用砖连接方案对所有版本的砖以上运行时版本的砖的连接方案。然而,如果您想要使用特性在以后版本的砖运行时,您必须升级砖连接相应的包。
完成以下步骤来设置数据砖的本地客户端连接。
在你开始之前设置本地砖连接的客户端,您必须符合要求的砖的连接。
提示
如果你已经安装了砖扩展Visual Studio代码,您不需要遵循这些设置指令。
砖扩展Visual Studio代码已经内置支持砖砖连接运行时13.0和更高版本。跳到运行或调试与砖连接的Python代码在砖的文档扩展Visual Studio代码。
与你的虚拟环境激活,卸载PySpark,如果已经安装,通过运行卸载命令。这是必需的,因为databricks-connect包与PySpark冲突。有关详细信息,请参见冲突PySpark安装。检查PySpark是否已经安装,运行显示命令。
卸载
databricks-connect
显示
# PySpark已经安装?pip3显示pyspark#卸载PySparkpip3卸载pyspark
与虚拟环境仍然激活,安装砖连接的客户端运行安装命令。使用——升级选择升级任何现有的客户端安装指定的版本。
安装
——升级
pip3安装,升级“databricks-connect = = 13.1 *”。#或X.Y.*to match your cluster version.
砖建议你添加“dot-asterisk”符号来指定databricks-connect = = X.Y. *而不是databricks-connect = X.Y,确保最新的安装包。虽然这不是一个要求,它有助于确保您可以使用最新的支持集群功能。
databricks-connect = = X.Y. *
databricks-connect = X.Y
在本节中,您配置属性之间建立一个连接砖连接和远程数据砖的集群。这些属性包括验证砖与集群的设置。
开始对砖砖连接运行时13.1和更高版本,砖包括连接砖SDK为Python。这个SDK实现砖客户端统一身份验证标准,统一和一致的体系结构和编程方法来验证。这种方法使得建立和自动化验证砖更集中的和可预测的。它允许您配置数据砖身份验证一次,然后使用该配置多个砖工具和sdk没有进一步验证配置更改。
Python的砖SDK尚未实现谷歌云凭据的身份验证或谷歌云ID认证。
砖砖13.0运行时仅支持的连接砖个人访问令牌认证进行身份验证。
收集以下配置属性。
的砖工作区实例名。这是一样的服务器主机名为您的集群价值;看到获得一个集群的连接细节。
集群的ID。你可以从URL获取集群ID。看到集群URL和ID。
其他必要的属性砖验证类型您想要使用。
中配置的连接代码。按照以下顺序砖连接搜索配置属性,直到找到他们。一旦它找到它们,它停止搜索剩余的选项:
砖个人访问令牌的身份验证,直接连接属性的配置,通过指定DatabricksSession类
DatabricksSession
这个选项,适用于砖个人访问令牌认证,指定工作区实例名,砖的个人访问令牌,集群的ID。
下面的代码示例演示如何初始化DatabricksSession类砖个人访问令牌的身份验证。
砖不建议您直接在代码中指定这些连接属性。相反,砖建议通过环境变量或配置文件配置属性,如后所述选项。下面的代码示例假设您提供一些实施建议retrieve_ *函数自己获取必要的属性从用户或其他配置存储,如谷歌云秘密经理。
retrieve_ *
#在builder.remote通过设置字段:从databricks.connect进口DatabricksSession火花=DatabricksSession。构建器。远程(主机=f“https://{retrieve_workspace_instance_name()}”,令牌=retrieve_token(),cluster_id=retrieve_cluster_id())。getOrCreate()#,或者通过使用砖SDK的配置类:从databricks.connect进口DatabricksSession从databricks.sdk.core进口配置配置=配置(主机=f“https://{retrieve_workspace_instance_name()}”,令牌=retrieve_token(),cluster_id=retrieve_cluster_id())火花=DatabricksSession。构建器。sdkConfig(配置)。getOrCreate()#,或者指定一个配置概要文件和砖# cluster_id字段分别:从databricks.connect进口DatabricksSession从databricks.sdk.core进口配置配置=配置(配置文件=“<配置文件名称>”,cluster_id=retrieve_cluster_id())火花=DatabricksSession。构建器。sdkConfig(配置)。getOrCreate()#,或通过设置在builder.remote引发连接连接字符串:从databricks.connect进口DatabricksSessionworkspace_instance_name=retrieve_workspace_instance_name()令牌=retrieve_token()cluster_id=retrieve_cluster_id()火花=DatabricksSession。构建器。远程(f“sc: / /{workspace_instance_name}:443 /令牌={令牌};x-databricks-cluster-id ={cluster_id}”)。getOrCreate()
对于所有砖身份验证类型,砖配置概要文件的名称,指定使用概要文件()
概要文件()
这个选项,创建或确定一个砖配置概要文件包含字段cluster_id和任何其他字段是必需的砖验证类型您想要使用。然后设置此配置概要文件的名称配置类。
cluster_id
配置
此外,您可以指定cluster_id分别从配置概要文件。而不是直接在代码中指定集群ID,以下代码示例假设您提供一些实施建议retrieve_cluster_id函数自己集群ID从用户或其他配置存储,如谷歌云秘密经理。
retrieve_cluster_id
例如:
#指定一个砖配置概要文件包含# cluster_id字段:从databricks.connect进口DatabricksSession火花=DatabricksSession。构建器。配置文件(“<配置文件名称>”)。getOrCreate()
砖个人访问令牌认证,SPARK_REMOTE环境变量
SPARK_REMOTE
这个选项,适用于砖个人访问令牌认证,设置SPARK_REMOTE环境变量如下字符串,用适当的值替换占位符。
sc:/ / <工作空间- - - - - -实例- - - - - -的名字>:443年/;令牌= <访问- - - - - -令牌- - - - - -价值>;x- - - - - -砖- - - - - -集群- - - - - -id= <集群- - - - - -id>
然后初始化DatabricksSession类如下:
从databricks.connect进口DatabricksSession火花=DatabricksSession。构建器。getOrCreate()
设置环境变量,看你的操作系统的文档。
对于所有砖的身份验证类型,DATABRICKS_CONFIG_PROFILE环境变量
DATABRICKS_CONFIG_PROFILE
这个选项,创建或确定一个砖配置概要文件包含字段cluster_id和任何其他字段是必需的砖验证类型您想要使用。
设置DATABRICKS_CONFIG_PROFILE环境变量来此配置概要文件的名称。然后初始化DatabricksSession类如下:
对于所有砖身份验证类型,一个环境变量为每个连接属性
这个选项设置DATABRICKS_CLUSTER_ID环境变量和其他必要的环境变量砖验证类型您想要使用。然后初始化DatabricksSession类如下:
DATABRICKS_CLUSTER_ID
对于所有砖身份验证类型,砖配置概要文件命名默认的
默认的
这个选项,创建或确定一个砖配置概要文件包含字段cluster_id和任何其他字段是必需的砖验证类型您想要使用。命名这个配置概要文件默认的。
如果你选择使用砖个人访问令牌认证包括身份验证,您可以使用pyspark实用程序来测试连接砖集群如下。
pyspark
与您的虚拟环境仍然激活,运行以下命令:
如果你设置SPARK_REMOTE环境变量,运行以下命令:
如果你没有设置SPARK_REMOTE环境变量,运行以下命令:
pyspark——远程sc: / / < workspace-instance-name >: 443 /;令牌= < access-token-value >; x-databricks-cluster-id = < cluster-id >”
火花壳出现,例如:
Python 3.10……(叮当声……]on darwin Type "help", "copyright", "credits" or "license" for more information. Welcome to ____ __ / __/__ ___ _____/ /__ _\ \/ _ \/ _ `/ __/ '_/ /__ / .__/\_,_/_/ /_/\_\ version 13.0 /_/ Using Python version 3.10 ... Client connected to the Spark Connect server at sc://...:.../;token=...;x-databricks-cluster-id=... SparkSession available as 'spark'. >>>
在> > >提示,运行一个简单的PySpark命令,如spark.range(10),告诉()。如果没有错误,你已经成功连接。
> > >
spark.range(10),告诉()
如果您已经成功连接,阻止引发壳,出版社Ctrl+d或Ctrl+z或运行该命令辞职()或退出()。
Ctrl+d
Ctrl+z
辞职()
退出()
这些部分描述了如何配置许多流行的ide和笔记本使用砖连接的客户端服务器。或者你可以使用内置的火花壳。
在本节中:
与Python JupyterLab
经典与Python Jupyter笔记本
Visual Studio和Python代码
与Python PyCharm
Eclipse与PyDev中
与Python火花壳
在你开始使用砖连接之前,必须符合要求的和设置客户端砖的连接。
使用砖联系JupyterLab和Python,遵循这些指令。
与您的Python安装JupyterLab,虚拟环境激活,从你的终端或命令提示符运行以下命令:
pip3安装jupyterlab
开始在您的web浏览器中JupyterLab,运行以下命令从你激活Python虚拟环境:
jupyter实验室
如果JupyterLab不出现在你的web浏览器,复制开头的URL本地主机或127.0.0.1从你的虚拟环境,并输入您的web浏览器的地址栏。
本地主机
127.0.0.1
创建一个新的笔记本:在JupyterLab,点击File > New >笔记本在主菜单中,选择Python 3 (ipykernel)并点击选择。
在笔记本的第一个细胞中,输入的示例代码或您自己的代码。如果您使用您自己的代码,至少你必须初始化DatabricksSession所示的示例代码。
笔记本,点击Run >运行所有细胞。
调试笔记本,点击错误(启用调试器旁边)图标Python 3 (ipykernel)在笔记本的工具栏。设置一个或多个断点,然后单击Run >运行所有细胞。
关闭JupyterLab,点击文件>关闭。如果JupyterLab进程仍在运行在你的终端或命令提示符下,停止这一过程按Ctrl+c然后进入y来确认。
Ctrl+c
y
更具体的调试说明,请参阅调试器。
使用砖联系经典Jupyter笔记本和Python,遵循这些指令。
与您的Python安装经典Jupyter笔记本,虚拟环境激活,从你的终端或命令提示符运行以下命令:
pip3安装笔记本
开始经典Jupyter笔记本在您的web浏览器中运行以下命令从你激活Python虚拟环境:
jupyter笔记本
如果经典Jupyter笔记本没有出现在您的web浏览器,复制开头的URL本地主机或127.0.0.1从你的虚拟环境,并输入您的web浏览器的地址栏。
创建一个新的笔记本:在经典Jupyter笔记本文件选项卡上,单击新的Python 3 > (ipykernel)。
笔记本,点击细胞>运行所有。
调试笔记本,添加以下代码行一开始你的笔记本:
从IPython.core.debugger进口set_trace
然后调用set_trace ()进入调试语句笔记本执行。
set_trace ()
关闭经典Jupyter笔记本,点击文件>关闭和停止。如果经典Jupyter笔记本进程仍在运行在你的终端或命令提示符下,停止这一过程按Ctrl+c然后进入y来确认。
砖扩展Visual Studio代码已经内置支持砖砖连接运行时13.0和更高版本。看到运行或调试与砖连接的Python代码在砖的文档扩展Visual Studio代码。
使用砖与Visual Studio和Python代码,遵循这些指示。
启动Visual Studio代码。
打开文件夹,其中包含您的Python虚拟环境(文件>打开文件夹)。
在Visual Studio代码终端(视图>终端),激活虚拟环境。
设置当前Python解释器是一个引用从虚拟环境:
在命令面板(视图>命令面板),类型Python:选择翻译,然后按输入。
Python:选择翻译
选择Python解释器的路径引用从虚拟环境。
添加到文件夹Python代码(. py)文件,其中包含的示例代码或您自己的代码。如果您使用您自己的代码,至少你必须初始化DatabricksSession所示的示例代码。
. py
运行代码:
与Python代码文件打开,设置任何断点暂停跑步时,你想让你的代码。
单击运行和调试栏上的图标,或点击视图>运行在主菜单。
在运行和调试视图中,单击运行和调试按钮。
按照屏幕上的指示开始运行和调试代码。
更具体的运行和调试的指导,请参阅配置和运行调试器和Python调试和代码。
IntelliJ IDEA最终为插件支持PyCharm提供Python。有关详细信息,请参见Python IntelliJ IDEA最终插件。
使用砖联系PyCharm和Python,遵循这些指令。
PyCharm开始。
创建一个项目:点击文件>新建项目。
为位置点击文件夹图标,然后选择您的Python虚拟环境之路。
选择先前配置的翻译。
为翻译,单击省略号。
点击系统翻译。
为翻译,单击省略号,选择Python解释器的完整路径引用从虚拟环境。然后单击好吧。
点击好吧一次。
点击创建。
点击创建从现有来源。
添加到项目中一个Python代码(. py)文件,其中包含的示例代码或您自己的代码。如果您使用您自己的代码,至少你必须初始化DatabricksSession所示的示例代码。
点击>跑或Run > Debug。
按照屏幕上的指令开始运行或调试代码。
更具体的运行和调试的指导,请参阅运行没有任何以前的配置和调试。
使用砖和连接Eclipse与PyDev中遵循这些指令。
启动Eclipse。
创建一个项目:点击File > New > > PyDev中> PyDev中项目,然后单击下一个。
指定一个项目名称。
为项目内容Python的虚拟环境,指定的路径。
点击就像之前请配置一个解释器。
点击手动配置。
点击新的python / pypy exe >浏览。
浏览并选择选择Python解释器的完整路径引用于虚拟环境中,然后单击开放。
在选择翻译对话框中,单击好吧。
在选择需要的对话框中,单击好吧。
在首选项对话框中,单击应用并关闭。
在PyDev中项目对话框中,单击完成。
点击开放的视角。
更具体的运行和调试的指导,请参阅运行一个程序。
火花壳处理砖个人访问令牌认证身份验证。
使用砖与火花壳牌和Python,遵循这些指示。
开始引发壳连接运行集群,运行以下命令之一从你激活Python虚拟环境:
Python 3.10……(叮当声……]on darwin Type "help", "copyright", "credits" or "license" for more information. Welcome to ____ __ / __/__ ___ _____/ /__ _\ \/ _ \/ _ `/ __/ '_/ /__ / .__/\_,_/_/ /_/\_\ version 13.x.dev0 /_/ Using Python version 3.10 ... Client connected to the Spark Connect server at sc://...:.../;token=...;x-databricks-cluster-id=... SparkSession available as 'spark'. >>>
指交互式分析引发壳信息如何使用火花与Python shell集群上运行命令。
使用内置的火花变量来表示SparkSession在你运行集群,例如:
火花
SparkSession
> > > df = spark.read.table (samples.nyctaxi.trips) > > > df.show (5) + - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - + | tpep_pickup_datetime | tpep_dropoff_datetime | trip_distance | fare_amount | pickup_zip | dropoff_zip | + - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - + | 2016-02-14 16:52:13 | 2016-02-14 17:16:04 | 4.94 | 19.0 | 10282 | 10171 | 2016-02-04 | 18:44:19 | 2016-02-04 18:46:00 | 0.28 | 3.5 | 10110 | 10110 | 2016-02-17 | 17:13:57 | 2016-02-17 17:17:55 | 0.7 | 5.0 | 10103 | 10023 | 2016-02-18 | 10:36:07 | 2016-02-18 10:41:45 | 0.8 | 6.0 | 10022 | 10017 | 2016-02-22 | 14:14:41 | 2016-02-22 14:31:52 | 4.51 | 17.0 | 10110 | 10282 | + - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - +只显示前5行
停止引发壳,出版社Ctrl+d或Ctrl+z或运行该命令辞职()或退出()。
砖提供了一些示例应用程序展示了如何使用砖连接。看到databricks-demos / dbconnect-examples在GitHub库。
您还可以使用以下简单的代码示例和砖连接实验。这些示例假设您正在使用默认的身份验证砖的连接。
这个简单的代码示例查询指定的表,然后显示指定表的前5行。使用不同的表,调整调用spark.read.table。
spark.read.table
从databricks.connect进口DatabricksSession火花=DatabricksSession。构建器。getOrCreate()df=火花。读。表(“samples.nyctaxi.trips”)df。显示(5)
这个长的代码示例如下:
创建一个内存DataFrame。
创建一个表的名称zzz_demo_temps_table在默认的模式。如果这个名字已经存在的表,表中删除。使用不同的模式或表,调整要求spark.sql,temps.write.saveAsTable,或两者兼而有之。
zzz_demo_temps_table
spark.sql
temps.write.saveAsTable
保存DataFrame表的内容。
运行一个选择查询的表的内容。
选择
显示查询的结果。
删除表。
从databricks.connect进口DatabricksSession从pyspark.sql.types进口*从datetime进口日期火花=DatabricksSession。构建器。getOrCreate()#创建一个火花DataFrame组成的高和低的温度#机场代码和日期。模式=StructType([StructField(“AirportCode”,StringType(),假),StructField(“日期”,DateType(),假),StructField(“TempHighF”,IntegerType(),假),StructField(“TempLowF”,IntegerType(),假)])数据=((“BLI”,日期(2021年,4,3),52,43),(“BLI”,日期(2021年,4,2),50,38),(“BLI”,日期(2021年,4,1),52,41),(“PDX”,日期(2021年,4,3),64年,45),(“PDX”,日期(2021年,4,2),61年,41),(“PDX”,日期(2021年,4,1),66年,39),(“海”,日期(2021年,4,3),57,43),(“海”,日期(2021年,4,2),54,39),(“海”,日期(2021年,4,1),56,41]]临时工=火花。createDataFrame(数据,模式)#砖集群的创建一个表,然后填满# DataFrame的表的内容。#从先前的运行,如果表已经存在#删除它。火花。sql(使用默认的)火花。sql(“删除表如果存在zzz_demo_temps_table”)临时工。写。saveAsTable(“zzz_demo_temps_table”)#查询砖集群上的表,返回的行#在机场代码不是BLI和日期晚比2021-04-01 #。组织和秩序的结果高#温度按照降序排列。df_temps=火花。sql(“从zzz_demo_temps_table SELECT *”\“AirportCode ! = BLI和日期>‘2021-04-01’”\“GROUP BY AirportCode,日期、TempHighF TempLowF”\“TempHighF DESC秩序”)df_temps。显示()#结果:## + - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - +# | AirportCode | |日期TempHighF | TempLowF |# + - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - +45 # | PDX | 64 | 2021-04-03 | |# | PDX | 61 | 2021-04-02 | 41 |43 57 #海| | 2021-04-03 | | |54 #海| | 2021-04-02 | | |# + - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - +#清理被删除的表数据砖集群。火花。sql(“DROP TABLE zzz_demo_temps_table”)
遵循这些指导方针迁移现有Python代码项目或编码环境从砖砖连接运行时12.2 LTS和降低砖砖连接运行时13.0和更高版本。
砖砖运行时连接13.0和更高版本目前仅支持面向项目和编码环境。
安装正确版本的Python中列出需求以匹配您的砖集群中,如果不是在本地已经安装了。
升级您的Python虚拟环境中使用正确的版本的Python以匹配您的集群中,如果需要的话。说明,请参阅您的虚拟环境提供的文档。
与你的虚拟环境激活,卸载PySpark从虚拟环境:
pip3卸载pyspark
与您的虚拟环境仍然激活,卸载砖砖运行时的12.2 LTS和较低的连接:
pip3卸载databricks-connect
与您的虚拟环境仍然激活,安装砖砖运行13.0和更高版本的连接:
更新您的Python代码初始化火花变量(代表一个实例化的DatabricksSession类,类似于SparkSession在PySpark)。代码示例,请参阅步骤2:配置连接属性。
本节描述如何使用砖连接访问砖公用事业。
你可以叫砖文件系统(DBFS)函数从内部砖工作区。要做到这一点,您使用WorkspaceClient类的dbfs变量。这种方法类似于调用砖公用事业通过dbfs在工作空间变量从一个笔记本。的WorkspaceClient类属于砖SDK为Python,这是包括在砖砖运行13.0和更高版本的连接。
WorkspaceClient
dbfs
您还可以使用Python的包括砖SDK的访问任何可用的砖REST API,不仅DBFS API。看到databricks-sdk在PyPI上。
初始化WorkspaceClient,你必须提供足够的信息来验证数据砖SDK Python的工作区。例如,您可以:
硬编码空间的URL和你访问令牌直接在您的代码,然后intializeWorkspaceClient如下。虽然支持这个选项,砖不建议这个选项,因为它可以暴露敏感信息,比如访问令牌,如果您的代码签入到版本控制或者共享:
w=WorkspaceClient(主机=“https:// < workspace-instance-name >”,令牌=“< access-token-value”)
创建或指定一个配置概要文件包含字段主机和令牌,然后intializeWorkspaceClient如下:
主机
令牌
w=WorkspaceClient(配置文件=“<配置文件名称>”)
设置环境变量DATABRICKS_HOST和DATABRICKS_TOKEN以同样的方式设置为砖连接,然后初始化WorkspaceClient如下:
DATABRICKS_HOST
DATABRICKS_TOKEN
w=WorkspaceClient()
砖SDK Python不承认SPARK_REMOTE环境变量为砖连接。
额外的Python砖砖SDK的身份验证选项,以及如何初始化AccountClient在Python访问可用数据砖的砖SDK的REST api在帐户级别而不是在空间层面,看到的databricks-sdk在PyPI上。
AccountClient
下面的示例创建一个文件命名zzz_hello.txt在DBFS根在工作区中,写数据到文件,关闭文件,从文件中读取数据,然后删除该文件。这个例子假定环境变量DATABRICKS_HOST和DATABRICKS_TOKEN已经设置:
zzz_hello.txt
从databricks.sdk进口WorkspaceClient进口base64w=WorkspaceClient()file_path=“/ zzz_hello.txt”file_data=“你好,砖!”#数据写入之前必须base64编码。file_data_base64=base64。b64encode(file_data。编码())#创建该文件。$ file_handle=w。dbfs。创建(路径=file_path,覆盖=真正的)。处理#添加的base64编码版本数据。w。dbfs。add_block(处理=$ file_handle,数据=file_data_base64。解码())#写后关闭该文件。w。dbfs。关闭(处理=$ file_handle)#读取文件的内容,然后解码和打印。响应=w。dbfs。读(路径=file_path)打印(base64。b64decode(响应。数据)。解码())#删除该文件。w。dbfs。删除(路径=file_path)
您还可以访问数据砖实用工具秘密实用程序通过w.secrets,工作实用程序通过w.jobs,图书馆实用程序通过w.libraries。
w.secrets
w.jobs
w.libraries
在客户端可以设置使用Hadoop的配置spark.conf.setAPI,它适用于SQL和DataFrame操作。Hadoop配置设置sparkContext必须在集群配置中设置或使用一个笔记本。这是因为配置设置sparkContext不与用户会话,但适用于整个集群。
spark.conf.set
sparkContext
本节描述一些常见的问题,你可能会遇到砖连接以及如何解决它们。
错误:StatusCode。StatusCode不可用。未知,DNS解析失败,或接收http2头状态500
Python版本不匹配
冲突PySpark安装
冲突或失踪路径二进制文件的条目
路径
文件名、目录名或卷标在Windows上语法是不正确的
问题:当你试图运行代码与数据砖连接,你得到一个错误消息,其中包含字符串等StatusCode.UNAVAILABLE,StatusCode.UNKNOWN,DNS决议失败的,或收到了http2头与状态:500年。
StatusCode.UNAVAILABLE
StatusCode.UNKNOWN
DNS决议失败的
收到了http2头与状态:500年
可能的原因:砖连接不能达到您的集群。
推荐解决方案:
检查以确保您的工作区实例名是正确的。如果你使用环境变量,确保相关的环境变量和正确的本地开发机器上可用。
检查以确保您的集群ID是正确的。如果你使用环境变量,确保相关的环境变量和正确的本地开发机器上可用。
检查以确保您的集群具有正确的自定义集群与砖连接兼容的版本。
检查您使用的Python版本当地至少有相同的小版本版本在集群上(例如,3.10.11与3.10.10是好的,3.10与3.9不是)。
3.10.11
3.10.10
3.9
如果你有多个Python版本安装在本地,确保砖使用正确的连接是通过设置PYSPARK_PYTHON环境变量(例如,PYSPARK_PYTHON = python3)。
PYSPARK_PYTHON
PYSPARK_PYTHON = python3
的databricks-connect包与PySpark冲突。安装两个初始化时将导致错误引发上下文在Python中。这可以体现在几个方面,包括“流破坏”或“找不到”的错误。如果你有PySpark安装到您的Python环境,确保安装databricks-connect之前卸载。卸载PySpark之后,一定要完全重新安装砖连接的包:
pip3卸载pyspark pip3卸载databricks-connect pip3安装,升级“databricks-connect = = 13.1 *”。#或X.Y.*to match your specific cluster version.
可以配置路径,这样的命令spark-shell将运行其他之前安装的二进制代替砖提供的一个连接。你应该确保优先考虑砖连接的二进制文件,或删除之前安装的。
spark-shell
如果你不能运行命令spark-shell,也有可能你的路径并不是自动建立的pip3安装,你将需要添加安装本手动dir到您的路径。可以使用砖与ide,即使这不是设置。
pip3安装
本
如果您使用的是砖连接在Windows上看:
文件名、目录名或卷标语法是不正确的。
砖连接被安装到一个目录空间在你的路径。您可以解决通过安装到一个目录路径没有空间,使用或配置路径短名称形式。
砖连接不支持以下砖特性和第三方平台。bob体育客户端下载
的SparkContext类及其方法是不可用的。
SparkContext
创建DataFrames大于128 MB的本地数据不支持,就会失败。
弹性分布式数据集不支持(抽样)和数据集。只有DataFrames支持。
查询,不支持持续时间超过3600秒,就会失败。
同步本地开发环境不支持与远程集群。
确保你使用的Python版本和任何Python包在你的本地开发环境匹配他们的等价物,集群上安装尽可能帮助确保代码相容性和有助于减少意外的运行时错误。
只支持Python。不支持R, Scala和Java。
不支持分布式训练。
MLflow支持,但不是模型推理mlflow.pyfunc.spark_udf(火花,…)。你可以在本地加载模型mlflow.pyfunc.load_model(<模型>),或者你可以把它作为一个定制的熊猫UDF。
mlflow.pyfunc.spark_udf(火花,…)
mlflow.pyfunc.load_model(<模型>)
你不能改变Log4j日志级别SparkContext。
马赛克不支持。
砖工作区用户与一个访问令牌由砖连接必须使用可以连接到权限或更高目标集群。
创建表表作为选择…SQL命令并不总是工作。相反,使用spark.sql(“选择……”).write.saveAsTable(“表”)。
创建表表作为选择…
spark.sql(“选择……”).write.saveAsTable(“表”)
砖CLI。
以下砖公用事业:
图书馆
笔记本的工作流
小部件