前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >thrift例子:python客户端/java服务端

thrift例子:python客户端/java服务端

作者头像
用户1225216
发布2018-03-05 14:30:26
1.4K0
发布2018-03-05 14:30:26
举报
文章被收录于专栏:扎心了老铁扎心了老铁

java服务端的代码请看上文

1、说明:

这两篇文章其实解决的问题是,当使用python去访问大数据线上集群的时候,遇到两个问题:

1)python-hadoop和python-hive相关包链接不稳定,表现为经常出现链接超时;

2)如果使用fork进程执行hadoop fs或者hive -e的方式则消耗大量的机器资源,包括进程资源和集群链接资源。

我们的解决方式是写一个java的代理服务,使用java-hadoop封装了对集群的操作,通过thrift提供接口给python程序。

2、编译.thrfit

代码语言:javascript
复制
thrift -gen py jazz.thrift

jazz.thrift内容如下

代码语言:javascript
复制
namespace java com.xiaoju.dqa.jazz.iface

service JazzService{
    bool exists(1:string path)
}

会生成python的package gen-py,将它拷贝到你的工程中。

3、python客户端

你需要安装python的thrift支持。

代码语言:javascript
复制
pip install thrift

python客户端的代码如下:

代码语言:javascript
复制
#!/usr/bin/env python
#-*- coding:utf-8 -*- 
import sys
sys.path.append('./gen-py')
import traceback

from jazz import JazzService #引入客户端类
 
from thrift import Thrift 
from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol, TCompactProtocol
 
try:
    #建立socket
    transport = TSocket.TSocket('localhost', 9090)
    #选择传输层,和服务端一致
    # transport = TTransport.TFramedTransport(transport)
    # transport = TTransport.TFramedTransportFactory().getTransport(socket)
    #选择传输协议,和服务端一致
    transport = TTransport.TBufferedTransport(transport)
    protocol = TBinaryProtocol.TBinaryProtocol(transport)
    #protocol = TCompactProtocol.TCompactProtocol(transport)
    #创建客户端
    client = JazzService.Client(protocol)
    transport.open()
    is_exists = client.exists("/home/.../...")
   print is_exists
    #关闭传输
    transport.close()
    #捕获异常
except Thrift.TException, ex:
    traceback.print_exc()
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-08-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档