通过Thrift实现C#与Hbase交流
近期着手的一个项目需要将我方数据存储到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服务
输入如下命令:
hbase-daemon.sh start thrift
hbase-daemons.sh start thrift (集群版本)
默认的thrift端口是9090,可以在hbase-site.xml配置文件中修改默认端口。
三、用C#编写测试代码
var transport = new TSocket("10.34.51.62", );
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(""), new List<Mutation> { mutation }, null);
Console.WriteLine("add success");
var row = client.getRow(Encoding.UTF8.GetBytes("emp"), Encoding.UTF8.GetBytes(""), 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(""), null);
Console.WriteLine("delete success");
Console.ReadKey();
transport.Close();
上述代码实现了hbase写入,读取,删除等功用。
四、测试结果

成功写入。
五、总结
1. 注意选择thrift和版本,通过查看maven的依赖获得

2. 使用thirft版本,而不是thrift2
3. hbase的rowKey+列Key相同时,会对数据进行修改
通过Thrift实现C#与Hbase交流的更多相关文章
- 【hbase】使用thrift with python 访问HBase
HBase 版本: 0.98.6 thrift 版本: 0.9.0 使用 thrift client with python 连接 HBase 报错: Traceback (most recent ...
- 使用C#通过Thrift访问HBase
前言 因为项目需要要为客户程序提供C#.Net的HBase访问接口,而HBase并没有提供原生的.Net客户端接口,可以通过启动HBase的Thrift服务来提供多语言支持. Thrift介绍 环境 ...
- PHP通过Thrift操作Hbase
PHP通过Thrift操作Hbase HBase是一个开源的NoSQL产品,它是实现了Google BigTable论文的一个开源产品,和Hadoop和HDFS一起,可用来存储和处理海量col ...
- HBase & thrift & C++编程
目录 目录 1 1. 前言 1 2. 启动和停止thrift2 1 2.1. 启动thrift2 1 2.2. 停止thrift2 1 2.3. 启动参数 2 3. hbase.thrift 2 3. ...
- ambari安装集群下python连接hbase之安装thrift
简介: python连接hbase是需要通过thrift连进行连接的,ambari安装的服务中貌似没有自带安装hbase的thrift,我是看配置hbase的配置名称里面没有thrift,cdh版本的 ...
- dotnetcore 与 hbase 之二——thrift 客户端的制作
说明 在上一篇文章dotnetcore 与 hbase 之一--hbase 环境准备结束后,我们已经有了 hbase 数据库环境.接下来就可以利用 thrift 生成 c# hbase 客户端了.如果 ...
- HBase介绍
欢迎和大家交流技术相关问题:邮箱: jiangxinnju@163.com博客园地址: http://www.cnblogs.com/jiangxinnjuGitHub地址: https://gith ...
- hbase 新增节点
关于Hbase的集群管理 http://www.linuxidc.com/Linux/2012-07/65909.htm 1.如果只增加集群的存储量,建议增加Hadoop datanode节点. 方法 ...
- HBase简介(很好的梳理资料)
http://www.tuicool.com/articles/iieIz2 一. 简介 history started by chad walters and jim 2006.11 G re ...
随机推荐
- Notification 弹出一个通知在桌面右下角
if (!("Notification" in window)) { //alert("This browser does not support desktop not ...
- dubbo解决本地开发直连
问题: 在如今的分布式项目开发中,zookeeper + dubbo是最常见的,通常的使用是用zookeeper做注册中心,dubbo做rpc,然后服务部署就可以实现相互之间的远程通信.所以开发项目时 ...
- AcWing 30. 正则表达式匹配 (剑指OFFER leetcode 10)
题目描述请实现一个函数用来匹配包括’.’和’*’的正则表达式. 模式中的字符’.’表示任意一个字符,而’*’表示它前面的字符可以出现任意次(含0次). 在本题中,匹配是指字符串的所有字符匹配整个模式. ...
- acwing 66. 两个链表的第一个公共结点
地址 https://www.acwing.com/problem/content/description/62/ 输入两个链表,找出它们的第一个公共结点. 当不存在公共节点时,返回空节点. 样例 给 ...
- ASM与ASMD
时序机 状态机 控制器 数据通路之间的关系 样例代码
- EF Core 3.0 Preview 9 的2个小坑
之前我们的数据库服务器使用的是 SQL Server 2008 R2 ,由于从 EF Core 3.0 Preview 6 开始不支持 UseRowNumberForPaging ,只能停留在 EF ...
- MySQL中使用group_concat遇到的坑
在使用group_concat的过程中遇到个问题,这里记录一下:在MySQL中有个配置参数group_concat_max_len,它会限制使用group_concat返回的最大字符串长度,默认是10 ...
- C语言程序设计100例之(2):一元二次方程
例2 一元二次方程 [题目描述] 输入系数a.b和c,求方程ax2+bx+c=0的根. [输入格式] 输入数据有多组.每组数据包括三个系数a,b,c.当a=0时,输入数据结束. [输出格式] 输出 ...
- Javascript模块化开发4——Grunt常用模块
一.copy 用于复制文件与目录. grunt-contrib-copy 二.eslint 检测代码的合理性. grunt-eslint 常见参数: 1.quiet 是否只显示errors.默认值fa ...
- CRF keras代码实现
这份代码来自于苏剑林 # -*- coding:utf-8 -*- from keras.layers import Layer import keras.backend as K class CRF ...