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


    java服务端的代码请看上文

    1、说明:

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

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

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

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

    2、编译.thrfit

    thrift -gen py jazz.thrift

    jazz.thrift内容如下

    namespace java com.xiaoju.dqa.jazz.iface
    
    service JazzService{
        bool exists(1:string path)
    }

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

    3、python客户端

    你需要安装python的thrift支持。

    pip install thrift

    python客户端的代码如下:

    #!/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()
  • 相关阅读:
    【老三层总结】老三层 页面 传值
    【总结-前台发送后台接收表单】MVC提交表单的四种方式
    Django使用Channels实现WebSocket数据推送功能
    关于子网、子网划分的一些内容
    关于摄像头推流拉流的一些内容
    群晖 docker frp公网访问
    Gitea搭建(搭建私有github仓库)
    frp内网穿透搭建流程,UDP通讯测试
    Centos7基础内容-命令
    Django 使用forms进行POST字段校验(文件上传校验)
  • 原文地址:https://www.cnblogs.com/kangoroo/p/7427247.html
Copyright © 2020-2023  润新知