c++连接hive的一个简单的例子





#include <stdio.h>
#include <unistd.h>
#include <sys/time.h>
#include <poll.h>


#include <iostream>


#include <boost/lexical_cast.hpp>
#include <protocol/TBinaryProtocol.h>
#include <transport/TSocket.h>
#include <transport/TTransportUtils.h>


#include <transport/TTransport.h>
#include <protocol/TProtocol.h>


#include "ThriftHive.h"


using namespace apache::thrift;
using namespace apache::thrift::protocol;
using namespace apache::thrift::transport;
using namespace Apache::Hadoop::Hive;






int main(int argc, char** argv)
{
  if (argc < 4) {
    std::cerr << "Invalid arguments!\n" << "Usage: DemoClient host port" << std::endl;
    return -1;
  }
  bool isFramed = false;
  boost::shared_ptr<TTransport> socket(new TSocket(argv[1], boost::lexical_cast<int>(argv[2])));
  boost::shared_ptr<TTransport> transport;


  if (isFramed) {
    transport.reset(new TFramedTransport(socket));
  } else {
    transport.reset(new TBufferedTransport(socket));
  }
  boost::shared_ptr<TProtocol> protocol(new TBinaryProtocol(transport));


  ThriftHiveClient client(protocol);


  try {
    transport->open();
    std::cout << "Scanner begin" << std::endl;


    std::string table(argv[3]);
    std::string qry1("select * from ");
    std::string qry = qry1 + table ;
    std::vector<std::string> result;
    std::cout << "Query:" << qry << std::endl;
    client.execute(qry);
    std::cout << "Query return ok." << std::endl;


    client.fetchAll(result);


    std::cout << "get return ok." << std::endl;




    for(int i = 0; i < result.size(); ++i)
    {
    std::cout << result[i]<<std::endl;
    }


    std::cout << "Scanner finished" << std::endl;
    transport->close();
    } catch(const TApplicationException&tx) {
    std::cerr << "ERROR: "<< tx.what() << std::endl;
    }catch (const TException &tx) {
    std::cerr << "ERROR: " << tx.what() << std::endl;
    }
 /*


 TSocket *socket = new TSocket("192.168.35.199", 10000);
    socket->setConnTimeout(3000);
    TTransport *transport = socket;
    transport->open();
    TProtocol protocol = new TBinaryProtocol(transport);
    */


    /*
    DemoService.Client client = new DemoService.Client.Factory().getClient(protocol);
    int result = client.demoMethod(param1, param2, param3);
    System.out.println("result: " + result);
    transport.close();
    */




    //TTransport *transport = new TSocket("192.168.35.199", 10000);
    //TProtocol *protocol = new TBinaryProtocol(*transport);
    //ThriftHive.Client client = new ThriftHive.Client(protocol);


    //transport->Open();
    //client.execute("add file /data/home/script/ad_resolve2.py;");
    //client->execute("select * from ljh_emp");
    //Console.WriteLine("the result is:");




    /*var items = client->fetchAll();
    foreach (var item in items)
    {
        Console.WriteLine(item);
    }*/
    //transport.Close();


    //Console.ReadLine();


    return 0;
}
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值