python连接hive的demo
在部署了两个hive后,分别在namenode和一个datanode上,用nohup hive --service hiveserver &将hive server启动。 Hive server 让Hive提供Thrift服务的服务器形式运行,允许不同的语言编写客户端进行访问。使用Thrift、JDBC、ODBC连接器的客户需要运行hive服务器来和Hive进行通信。通过设置HIVE_PORT环境变量来指明服务器监听的端口(默认的是10000)
import sysfrom hive_service import ThriftHivefrom hive_service.ttypes import HiveServerExceptionfrom thrift import Thriftfrom thrift.transport import TSocketfrom thrift.transport import TTransportfrom thrift.protocol import TBinaryProtocoltry: transport = TSocket.TSocket('192.168.30.201', 10000) transport = TTransport.TBufferedTransport(transport) protocol = TBinaryProtocol.TBinaryProtocol(transport) client = ThriftHive.Client(protocol) transport.open() hql = '''CREATE TABLE people(a STRING, b INT, c DOUBLE) row format delimited fields terminated by ',' ''' print hql client.execute(hql) client.execute("LOAD DATA LOCAL INPATH '/home/diver/data.txt' INTO TABLE people") #client.execute("SELECT * FROM people") #while (1): # row = client.fetchOne() # if (row == None): # break # print row client.execute("SELECT count(*) FROM people") print client.fetchAll() transport.close()except Thrift.TException, tx: print '%s' % (tx.message)