HIVE Thrift Server使用总结

本文介绍了一个使用dotNETMVC应用通过HiveThriftServer从Hive获取数据的具体实现过程。文章详细记录了生成C#类文件时遇到的问题及解决方法,并分享了客户端代码示例,最后提出了对服务端多线程调用可行性的疑问。

因为报表前端用dot NET MVC写的,要想从HIVE中获取详细数据,目前的方案是使用hive thriftserver。

1. 生成HIVE Thrift对应的C#类文件

遇到的问题是找不到thriftserver.thrift中引用的fb303.thrift文件。解决方案:从thrift源码目录中复制一份过来。然后利用thriftserver.thrift生成了4个类文件,复制到项目中编译报错,不得不将引用的其他三个文件分别利用thrift生成C#类,最后将几十个类文件复制到项目中,修改项目属性,将framework 4 client profile修改为framework 4,编译通过。

 

client代码如下:

static void Main(string[] args)
        {
            TTransport transport = new TSocket("192.168.1.1"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 web_pv_log_detail3 where dt = '2012-09-10' limit 10");
            Console.WriteLine("the result is:");

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

            Console.ReadLine();
        }

 

2. 启动服务端服务:

hive --service hiveserver

3. 测试。发现多次调用execute之后调用fetch,每次会获取到最后一个execute的结果,对于多线程调用的可用性持怀疑态度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值