首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用python客户端访问远程服务器上的配置单元

如何使用python客户端访问远程服务器上的配置单元
EN

Stack Overflow用户
提问于 2015-09-01 17:25:59
回答 3查看 8.5K关注 0票数 1

案例:我在cloudera平台上有Hive。在Hive上有一个数据库,我想从我的计算机上使用python客户端访问它。我读到了一个类似的SO问题,但它使用了pyhs2,我无法在远程服务器上安装它。这个SO问题也使用了节俭,但我似乎也不能安装它。

代码:在遵循文档之后,当我执行下面的程序时,它给我一个错误。

代码语言:javascript
复制
import pyodbc, sys, os
   pyodbc.autocommit=True
   con = pyodbc.connect("DSN=default",driver='SQLDriverConnect',autocommit=True)  
   cursor = con.cursor()
   cursor.execute("select * from fb_mpsp")

错误: ssh://ashish@ServerIPAddress/home/ashish/anaconda/bin/python2.7 /home/ashish/PyCharm_proj/hdfsConnect/home/ashish/PyCharm_proj/hdfsConnect/Hive_connect/hive_connect.py -u

回溯(最近一次调用):文件驱动程序行5,in "/home/ashish/PyCharm_proj/hdfsConnect/home/ashish/PyCharm_proj/hdfsConnect/Hive_connect/hive_connect.py",= pyodbc.connect("DSN=default",driver='SQLDriverConnect',autocommit=True)

pyodbc.Error:('IM002',‘未找到IM002Driver ManagerData源名称,未指定默认驱动程序(0) (SQLDriverConnect)')

进程已完成,退出代码为%1

请建议我如何解决这个问题?此外,我不确定为什么当代码将使用hadoop hive执行时,我必须将驱动程序指定为SQLDriverConnect?

谢谢

EN

回答 3

Stack Overflow用户

发布于 2016-06-26 18:04:14

这对我很有效

代码语言:javascript
复制
oODBC = pyodbc.connect("DSN=Cloudera Hive DSN 64;", autocommit = True, ansi = True )

现在一切都正常了。

使用以下命令确保您的DSN没有问题:

代码语言:javascript
复制
isql -v "Cloudera Hive DSN 64" 

并将"Cloudera Hive DSN64“替换为您在odbc.ini中使用的名称

此外,目前我不能使用kerberos身份验证,除非我手动创建票证。Impala使用kerberos密钥表文件顺利工作

任何有关如何让hive odbc处理密钥表文件的帮助都将不胜感激。

票数 2
EN

Stack Overflow用户

发布于 2015-10-22 05:29:18

如果您决定重新访问pyhs2,请注意,它不需要安装在远程服务器上,而是安装在您的本地客户端上。

如果继续使用pyodbc,则需要安装配置单元的ODBC driver,您可以从Cloudera's site获得该驱动程序。

您不需要指定连接中的驱动程序,它应该是DSN的一部分。创建DSN的细节取决于您的操作系统,但本质上,您将使用管理工具和数据源(Windows)、安装ODBC和编辑/Library/ODBC/odbc.ini (Mac)或编辑/etc/odbc.ini (Linux)来创建它。

从概念上讲,可以将DSN视为表示有关连接的所有信息的规范-它将包含主机、端口和驱动程序信息。这样,您就不必在代码中指定这些内容,并且可以在不更改代码的情况下切换有关数据库的详细信息。

代码语言:javascript
复制
# Note only the DSN name specifies the connection
import pyodbc
conn = pyodbc.connect("DSN=Hive1") 
cursor = conn.cursor()
cursor.execute("select * from YYY")

或者,我已经更新了您引用的另一个问题,其中包含了有关如何安装节点库的信息。如果你有这样的选择,我认为这就是你要做的。

票数 1
EN

Stack Overflow用户

发布于 2016-07-31 21:07:46

也可以尝试这种方法从hive服务器远程连接和获取数据:使用ssh连接远程服务器,并发出cli命令从远程服务器访问数据:ssh -o UserKnownHostsFile=/dev/null -o ConnectTimeout=90 -o StrictHostKeyChecking=no shashanks@remote_host 'hive -e "select * from DB.testtable limit 5;" >/home/shashanks/testfile'

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32327969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档