通过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 ...
随机推荐
- 利用Azure虚拟机安装Dynamics 365 Customer Engagement之五:安装SQL Server
我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...
- 微信小程序获取input输入框内容
1.wxml <input class="weui-input" type='number' bindinput="emailInput"/> ...
- Android开发与Sequoyah的安装问题
首次接触Android开发,在搭建开发环境时遇到困难,写出来和大家分享分享. 使用的ide为捆绑了adt插件和android sdk的eclipse adt bundle,无需安装android sd ...
- linux环境下卸载oracle 11g
1.停库[oracle@testdb ~]$ sqlplus / as sysdbaSQL> shutdown immediateDatabase closed.Database dismoun ...
- 关于git远程
1.注册github的账户(官网;github.com ) 2.新建一个项目(在右上角点击+,选择New repository ),输入项目名和项目描述,其他可根据自己项目选填,创建完成后可查看到ht ...
- 基础知识 Asp.Net MVC EF各版本区别
原文:https://www.cnblogs.com/liangxiaofeng/p/5840754.html 2009年發行ASP.NET MVC 1.0版 2010年發行ASP.NET MVC 2 ...
- 报错:Something is already running on port 8000.
在用react框架的时候,用cnpm run dev命令执行项目时,有时会出现这种错误, 这是因为你之前执行过该命令,但是没关闭,解决办法是打开任务管理器, 在进程中找到node.exe,右键关闭这个 ...
- wepy安装后提示Cannot read property 'addDeps'
最近准备做一个微信小程序,以前一直用的小程序原始api做,但是这次准备用一个框架来做练习,当然在做之前需要比较一下现在小程序框架的优缺点. 经过认真挑选,选定wepy,Taro,uni-app,mpv ...
- 前端笔记之Vue(四)UI组件库&Vuex&虚拟服务器初识
一.日历组件 new Date()的月份是从0开始的. 下面表达式是:2018年6月1日 new Date(2018, 5, 1); 下面表达式是:2018年5月1日 new Date(2018, 4 ...
- URLDecoder异常Illegal hex characters in escape (%)
URLDecoder对参数进行解码时候,代码如: URLDecoder.decode(param,"utf-8"); 有时候会出现类似如下的错误: URLDecoder异常Ille ...