开始
加载和管理数据
处理数据
政府
引用和资源
2023年8月2日更新
给我们反馈
你可以通过ODBC连接从你本地Python代码在砖集群数据。要做到这一点,您可以使用开源的Python代码模块bob下载地址pyodbc。
pyodbc
按照下列指示来安装、配置和使用pyodbc。
更多信息pyodbc,请参阅pyodbc维基。
请注意
砖了Python的砖SQL的连接器作为一个替代pyodbc。Python的砖SQL的连接器是容易设置和使用,并有一组更健壮的编码结构,比pyodbc。然而pyodbc获取查询结果的时候可能有更好的性能高于10 MB。
当地开发机器运行下列之一:
macOS
窗户
一个支持Unix或Linux发行版rpm程序或. deb文件
rpm程序
. deb
皮普。
对于Unix, Linux或macOS家酿。
一个砖集群。有关更多信息,请参见创建一个集群。
按照说明Unix, Linux或macOS或窗户。
如果你当地的Python代码运行在Unix、Linux、或macOS机器,遵循这些指令。
在这个步骤中,你下载并安装砖ODBC驱动程序unixodbc包,pyodbc模块。(pyodbc模块需要unixodbc包在Unix、Linux和macOS)。
unixodbc
下载砖ODBC驱动程序。
安装砖ODBC驱动程序,打开SimbaSparkODBC.zip你下载的文件。
SimbaSparkODBC.zip
做下列之一:
macOS:双击提取辛巴Spark.dmg文件。然后双击SimbaSparkODBC.pkg文件显示,遵循任何屏幕方向。
辛巴Spark.dmg
SimbaSparkODBC.pkg
Linux:使用发行版的包管理器实用工具安装提取simbaspark.rpm或simbaspark.deb文件,并遵守任何屏幕方向。
simbaspark.rpm
simbaspark.deb
安装unixodbc方案:从终端,运行酿造安装unixodbc。有关更多信息,请参见unixodbc家酿的网站。
酿造安装unixodbc
安装pyodbc模块:从终端,运行皮普安装pyodbc。有关更多信息,请参见pyodbc在PyPI网站安装pyodbc Wiki。
皮普安装pyodbc
指定集群砖的连接细节pyodbc使用。
安全最佳实践,当您使用自动化工具进行身份验证,系统中,脚本和应用程序,砖属于建议您使用个人访问令牌服务主体而不是用户工作区。为服务主体,创建令牌服务主体的管理令牌。
将以下内容添加到/etc/odbc.ini文件在您的机器上:
/etc/odbc.ini
提示
如果你不想或不能使用/etc/odbc.ini文件在您的机器上,您可以指定在Python代码直接连接细节。要做到这一点,跳过这一步,继续休息步骤3:测试你的配置。
(ODBC数据源)Databricks_Cluster=辛巴火花ODBC驱动程序(Databricks_Cluster)司机=<驱动器路径>描述=辛巴火花DSN ODBC驱动程序主机=<服务器主机>港口=443年模式=默认的SparkServerType=3AuthMech=3UID=令牌松材线虫病=< personal-access-token >ThriftTransport=2SSL=1HTTPPath=< http-path >
在前面的配置文件,替换占位符后,然后保存文件:
取代<驱动器路径>与下列之一:
<驱动器路径>
macOS:/图书馆/辛巴/ / lib / libsparkodbc_sbu.dylib火花
/图书馆/辛巴/ / lib / libsparkodbc_sbu.dylib火花
Linux 64位:/ opt /辛巴/ / lib / 64 / libsparkodbc_sb64.so火花
/ opt /辛巴/ / lib / 64 / libsparkodbc_sb64.so火花
Linux 32位:/ opt /辛巴/ / lib / 32 / libsparkodbc_sb32.so火花
/ opt /辛巴/ / lib / 32 / libsparkodbc_sb32.so火花
取代<服务器主机>与服务器主机名价值的高级选项,JDBC / ODBC选项卡为您的集群。
<服务器主机>
取代< personal-access-token >与你的价值个人访问令牌为你的砖工作区。
< personal-access-token >
取代< http-path >与HTTP路径价值的高级选项,JDBC / ODBC选项卡为您的集群。
< http-path >
允许pyodbc连接到不同的集群,将一个条目添加到(ODBC数据来源)下面的部分和一个匹配的条目(Databricks_Cluster)与特定的连接细节。每个条目必须有一个唯一的名称在这个文件中。
(ODBC数据来源)
(Databricks_Cluster)
添加之前的信息添加到/etc/odbc.ini文件到相应的/usr/local/etc/odbc.ini文件在您的机器上。
/usr/local/etc/odbc.ini
将以下内容添加到/etc/odbcinst.ini文件在您的机器上:
/etc/odbcinst.ini
(ODBC驱动程序)辛巴SQL Server ODBC驱动程序=安装(辛巴火花ODBC驱动程序)司机=<驱动器路径>
在前面的内容中,替换<驱动器路径>用下列值之一,然后保存文件:
你刚才添加的信息添加到/etc/odbcinst.ini文件到相应的/usr/local/etc/odbcinst.ini文件在您的机器上。
/usr/local/etc/odbcinst.ini
添加以下信息结束的时候simba.sparkodbc.ini文件在您的机器上,然后保存文件。macOS,这个文件/图书馆/辛巴/火花/ lib。
simba.sparkodbc.ini
/图书馆/辛巴/火花/ lib
DriverManagerEncoding=UTF- - - - - -16ODBCInstLib= /usr/当地的/地窖/unixodbc/2.3.9/自由/libodbcinst。dylib
在这个步骤中,您编写和运行Python代码使用砖集群来查询数据库表并显示查询结果的前两行。
查询通过使用一个集群:
创建一个文件命名pyodbc-test-cluster.py用下面的内容。取代<表名称>查询数据库表的名称,保存文件,然后运行该文件与您的Python解释器。
pyodbc-test-cluster.py
<表名称>
进口pyodbc# <表名称>替换为数据库表的名称来查询。table_name=“<表名称>”#连接到集群使用砖#您在前面创建的数据源名称(DSN)。康涅狄格州=pyodbc。连接(“DSN = Databricks_Cluster”,自动提交=真正的)#运行一个SQL查询使用前面的连接。光标=康涅狄格州。光标()光标。执行(f“SELECT *{table_name}限制2”)#打印行从查询检索。打印(f“查询输出:SELECT *{table_name}限制2\ n”)为行在光标。fetchall():打印(行)
如果你跳过步骤2:配置软件,没有使用一个/etc/odbc.ini文件,然后在调用指定连接细节pyodbc.connect,例如:
pyodbc.connect
康涅狄格州=pyodbc。连接(“司机= <驱动器路径>;”+“主机= <服务器主机>;”+“端口= 443;”+“模式=违约;”+“SparkServerType = 3;”+“AuthMech = 3;”+“UID =令牌;”+“PWD = < personal-access-token >;”+“ThriftTransport = 2;+“SSL = 1;”+“HTTPPath = < http-path >”,自动提交=真正的)
替换占位符的值作为描述步骤2:配置软件。
加快运行代码,启动集群相对应的HTTPPath设置在你的odbc.ini文件。
HTTPPath
odbc.ini
运行pyodbc-test-cluster.py文件与您的Python解释器。的前两行显示数据库表。
Python测试代码运行在不同的集群中,更改设置在前面两个odbc.ini文件。或者添加一个新条目(ODBC数据来源)部分,连同匹配的连接细节,两个odbc.ini文件。然后在测试代码更改DSN名称匹配相关的名称(ODBC数据来源)。
运行Python测试代码与一个不同的数据库表,更改table_name价值。
table_name
运行Python测试代码与一个不同的SQL查询,更改执行命令字符串。
执行
如果您的本地Python代码运行在Windows机器上,遵循这些指示。
双击提取辛巴Spark.msi文件,并遵守任何屏幕方向。
辛巴Spark.msi
安装pyodbc模块:从一个行政命令提示符运行皮普安装pyodbc。有关更多信息,请参见pyodbc在PyPI网站安装pyodbc Wiki。
为一个集群:指定连接细节
添加一个数据源名称(DSN)包含关于您的集群信息:开始的ODBC数据源应用程序:开始菜单,开始打字ODBC,然后单击ODBC数据源。
ODBC
在用户DSN选项卡上,单击添加。在创建新数据源对话框中,单击辛巴火花ODBC驱动程序,然后单击完成。
在辛巴火花ODBC Driver DSN设置对话框,改变以下值:
数据源名称:Databricks_Cluster
Databricks_Cluster
描述:我的集群
我的集群
火花服务器类型:SparkThriftServer(火花1.1和后)
SparkThriftServer(火花1.1和后)
主机(年代):服务器主机名价值的高级选项,JDBC / ODBC选项卡为您的集群。
港口:443年
443年
数据库:默认的
默认的
机制:用户的名字和密码
用户的名字和密码
用户名:令牌
令牌
密码:你的价值个人访问令牌为你的砖工作区。
节约运输:HTTP
HTTP
点击HTTP选项。在HTTP属性对话框,HTTP路径,输入HTTP路径价值的高级选项,JDBC / ODBC为您的集群选项卡,然后单击好吧。
点击SSL选项。在SSL选项对话框,检查启用SSL框,然后单击好吧。
点击测试。如果测试成功,单击好吧。
允许pyodbc开关连接到不同的集群,重复这个过程与特定的连接细节。每个DSN必须有一个惟一名称。
创建一个文件命名pyodbc-test-cluster.py用下面的内容。取代<表名称>查询数据库表的名称,然后保存文件。
加快运行代码,启动集群相对应的主机(年代)的价值辛巴火花ODBC Driver DSN设置砖集群的对话框。
Python测试代码运行在不同的集群中,改变主机(年代)的价值辛巴火花ODBC Driver DSN设置砖集群的对话框。或创建一个新的DSN。然后在测试代码更改DSN名称匹配相关的数据源名称。
当使用这一节将介绍一些常见的问题pyodbc砖。
问题:你收到一个错误消息类似如下:
<类的pyodbc。错误”>返回一组结果错误回溯(最近的电话最后):文件“/用户/用户/ .pyenv /版本/ 3.7.5 / lib / python3.7 /编码/ utf_16_le。py”,行16日在解码返回编解码器。utf_16_le_decode(输入错误,正确)UnicodeDecodeError: utf-16-le的编解码器不能解码字节位置2112 - 2113:非法utf - 16代理
导致:存在一个问题pyodbc版本4.0.31或低于运行查询,返回时可以与这些症状清单列长名称或错误消息。这个问题已经固定的一个新版本pyodbc。
解决方案:升级你的安装pyodbc4.0.32版或以上。
看到问题在mkleehammer / pyodbc在GitHub库。