前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >通过Thrift实现C#与Hbase交流

通过Thrift实现C#与Hbase交流

作者头像
sam dragon
发布2019-05-27 21:28:17
1.2K0
发布2019-05-27 21:28:17
举报
文章被收录于专栏:cnblogscnblogs

近期着手的一个项目需要将我方数据存储到Hadoop的大数据环境,由于本人是.net平台的开发者,没有怎么接触过大数据(因为他实在是太高大尚了)。但还好baidu, google后,还是很找到了解决办法,就是C#写数据到hbase,然后大数据开发者在从hbase读取数据进行多维度处理,如将一部分历史数据转移到hive,或者是将一部分数据推送到机器学习库进行学习。

一、获取hbase的thrift定义,并生成c#类

1.1 到hbase源码地址获取thrift的定义

注意Hbase的版本一定要与运行的Hbase对应。

请选择thrift,而不是thrift2,原因thrift接口看上更为好用

1.2 获取thrift,生成c#代码

thrift生成代码可以参考的我《半小时入Thrift

二、启动hbase的thrift服务

输入如下命令:

代码语言:javascript
复制
hbase-daemon.sh start thrift
hbase-daemons.sh start thrift (集群版本)

默认的thrift端口是9090,可以在hbase-site.xml配置文件中修改默认端口。

三、用C#编写测试代码

代码语言:javascript
复制
var transport = new TSocket("10.34.51.62", 9090);
            TProtocol protocol = new TBinaryProtocol(transport);
            var client = new Hbase.Client(protocol);
            transport.Open();
            var tabls = client.getTableNames();
            foreach(var t in tabls)
            {
                Console.WriteLine(Encoding.Default.GetString(t));
            }
            //写
            Mutation mutation = new Mutation();
            mutation.Column = Encoding.UTF8.GetBytes("personal_data:abc");
            mutation.Value = Encoding.UTF8.GetBytes("Hello");
            client.mutateRow(Encoding.UTF8.GetBytes("emp"), Encoding.UTF8.GetBytes("008"), new List<Mutation> { mutation }, null);
            Console.WriteLine("add success");
            var row = client.getRow(Encoding.UTF8.GetBytes("emp"), Encoding.UTF8.GetBytes("008"), null);
            foreach (var r in row)
            { 
                Console.WriteLine(Encoding.UTF8.GetString(r.Row));
                foreach(var c in r.Columns)
                {
                    Console.WriteLine("-- " + Encoding.UTF8.GetString(c.Key) + ":" + Encoding.UTF8.GetString(c.Value.Value));
                }
            }
            client.deleteAllRow(Encoding.UTF8.GetBytes("emp"), Encoding.UTF8.GetBytes("008"), null);
            Console.WriteLine("delete success");
            Console.ReadKey();
            transport.Close();

上述代码实现了hbase写入,读取,删除等功用。

四、测试结果

成功写入。

五、总结

  1. 注意选择thrift和版本,通过查看maven的依赖获得
  1. 使用thirft版本,而不是thrift2
  2. hbase的rowKey+列Key相同时,会对数据进行修改
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-05-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、获取hbase的thrift定义,并生成c#类
    • 1.1 到hbase源码地址获取thrift的定义
    • 1.2 获取thrift,生成c#代码
    • 二、启动hbase的thrift服务
    • 三、用C#编写测试代码
    • 四、测试结果
    • 五、总结
    相关产品与服务
    TDSQL MySQL 版
    TDSQL MySQL 版(TDSQL for MySQL)是腾讯打造的一款分布式数据库产品,具备强一致高可用、全球部署架构、分布式水平扩展、高性能、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警等配套设施,为客户提供完整的分布式数据库解决方案。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档