https://cwiki.apache.org/confluence/display/hive/hiveclient#hiveclient-python似乎已经过时了。
当我将此添加到/etc/profile时:
export PYTHONPATH=$PYTHONPATH:/usr/lib/hive/lib/py
然后我可以按照链接中列出的方式进行导入,除了 from hive import ThriftHive
实际上需要:
from hive_service import ThriftHive
下一个例子中的端口是10000,当我尝试时导致程序挂起。默认的hive-thrift端口是9083,它停止了挂起。
所以我就这样安排:
from thrift import Thrift
from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol
try:
transport = TSocket.TSocket('<node-with-metastore>', 9083)
transport = TTransport.TBufferedTransport(transport)
protocol = TBinaryProtocol.TBinaryProtocol(transport)
client = ThriftHive.Client(protocol)
transport.open()
client.execute("CREATE TABLE test(c1 int)")
transport.close()
except Thrift.TException, tx:
print '%s' % (tx.message)
我收到以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/hive/lib/py/hive_service/ThriftHive.py", line 68, in execute
self.recv_execute()
File "/usr/lib/hive/lib/py/hive_service/ThriftHive.py", line 84, in recv_execute
raise x
thrift.Thrift.TApplicationException: Invalid method name: 'execute'
但是检查thrifthive.py文件会发现在客户机类中执行的方法。
如何使用python访问配置单元?
16条答案
按热度按时间sczxawaw16#
这里有一个通用的方法,它使我很容易,因为我一直从python连接到多个服务器(sql、teradata、hive等)。因此,我使用pyodbc连接器。下面是使用pyodbc的一些基本步骤(以防您从未使用过它):
先决条件:在执行以下步骤之前,您应该在windows设置中具有相关的odbc连接。如果你没有,在这里找同样的
完成后:步骤1。pip安装:
pip install pyodbc
(以下是从微软网站下载相关驱动程序的链接)第二步。现在,在python脚本中导入相同的内容:
第三步。最后,继续并给出如下连接细节:
使用pyodbc最好的部分是我只需要导入一个包就可以连接到几乎所有的数据源。