Chinaunix首页 | 论坛 | 博客
  • 博客访问: 302481
  • 博文数量: 22
  • 博客积分: 674
  • 博客等级: 上士
  • 技术积分: 792
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-19 00:48
文章存档

2013年(2)

2012年(20)

我的朋友

分类: Python/Ruby

2012-06-05 08:46:37

  1)像其它模块应用一样,如果需要使用python连接hadoop(hive)进行相应开发操作,需要在下载安装模块,这里以thrift连接服务 的形式进行简单的操作,所以首先从 下载包,将其解压,这里解压之后,并没有像官网上说的那样其目录结构下有bootstrap.py,所以我就按照正常的安装模块的方法,即:python setup.py install进行安装。
  
  2)接下来,这里举个自己写的实例,是将从hive中获取的字段写入本地文件系统中,代码如下(test.py):

 点击(此处)折叠或打开

  1. import os,sys

  2. from hive_service import ThritfHive

  3. from hive_service.ttypes import HiveServerException

  4. from thrift.transport import TSocket

  5. from thrift import Thrift

  6. from thrift.transport import TTransport

  7. from thrift.protocol import TBinaryProtocol


  8. if__name__=='__main__':

  9.     try:

  10.         socket = TSocket.TSocket('10.40.32.200', 10000)

  11.         transport = TTransport.TBufferedTransport(socket)

  12.         protocol = TBinaryProtocol.TBinaryProtocol(transport)

  13.         client = ThriftHive.Client(protocol)

  14.         sql = 'select id, name from mydb.test'

  15.         transport.open()

  16.         client.execute(sql)

  17.         with open('/home/username/out.txt','w') as out_file:

  18.             while client.fetchOne():

  19.                 out_file.write(client.fetchOne())

  20.         transport.close()

  21.     except Thrift.TException, tx:

  22.         print'%s'%(tx.message)

  但是在终端执行python test.py,确报了如下的错误:

 点击(此处)折叠或打开

  1. [username@localhost python]$ python pre_process.py 

  2. Traceback (most recent call last):

  3.   File "pre_process.py", line 1, in 

  4.     from hive_service import ThritHive

  5. ImportError: cannot import name ThritHive

  查看之后,才发现在执行了第(1)步后,python2.7/site-packages中并没有相应模块,这样当然是不可能通过编译的,所以到刚才解压后的根目录,将build/lib中的所有模块都拷贝到python2.7/site-packages中,如下:

 点击(此处)折叠或打开

  1. sudo cp -r lib/* /usr/lib/python2.7/site-packages/

  这样就可以通过,顺利运行了!
阅读(11459) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~