军在桥 发表于 2015-8-13 20:49 环境变量添加了吗,别人只是给一个方向,更多需要根据自己的实际情况来解决 |
bob007 发表于 2015-8-13 19:44 还需要cp什么,指点指点呗 |
军在桥 发表于 2015-8-13 18:55 显然第一步做的还不够 |
第一步 之前已经做完了,到第二步的时候总是报错,Exception in thread "main" java.lang.ClassNotFoundException: org.apache.hadoop.hive.service.HiveServer at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) |
楼主启动hive是用的Java,应该使用python 下面仅供参考 1 准备连接hive的python代码 在使用Python连接hive之前需要将hive中的文件拷贝到python的sys.path中 [mw_shl_code=bash,true]cp -r $HIVE_PATH/lib/py /usr/local/lib/python2.7/site-packages[/mw_shl_code] 或者将hive中连接代码,设法加入到python的eclipse项目中 总之,目的只有一个,就是用hive自己提供的python客户端代码,来连接hive 关于具体如果将第三方的python代码加入环境变量,可以参照python中添加环境变量 2 启动hive 的thrift 如果hive机器没有thrift请先安装, 确保以下服务开启: [mw_shl_code=bash,true]hive --service hiveserver [/mw_shl_code] 3 写代码连接hive hive的ip是机器的ip,端口默认为10000 ------------------------------------------------------------------- [mw_shl_code=python,true]import sys from hive_service import ThriftHive from hive_service.ttypes import HiveServerException from thrift import Thrift from thrift.transport import TSocket from thrift.transport import TTransport from thrift.protocol import TBinaryProtocol def hiveExe(sql): try: transport = TSocket.TSocket('127.0.0.1', 10000) transport = TTransport.TBufferedTransport(transport) protocol = TBinaryProtocol.TBinaryProtocol(transport) client = ThriftHive.Client(protocol) transport.open() client.execute(sql) print "The return value is : " print client.fetchAll() print "............" transport.close() except Thrift.TException, tx: print '%s' % (tx.message) if __name__ == '__main__': hiveExe("show tables") --------------------------------[/mw_shl_code] |