近期着手的一个项目需要将我方数据存储到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交流的更多相关文章

  1. 【hbase】使用thrift with python 访问HBase

    HBase 版本: 0.98.6 thrift   版本: 0.9.0 使用 thrift client with python 连接 HBase 报错: Traceback (most recent ...

  2. 使用C#通过Thrift访问HBase

    前言 因为项目需要要为客户程序提供C#.Net的HBase访问接口,而HBase并没有提供原生的.Net客户端接口,可以通过启动HBase的Thrift服务来提供多语言支持. Thrift介绍 环境 ...

  3. PHP通过Thrift操作Hbase

    PHP通过Thrift操作Hbase     HBase是一个开源的NoSQL产品,它是实现了Google BigTable论文的一个开源产品,和Hadoop和HDFS一起,可用来存储和处理海量col ...

  4. 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. ...

  5. ambari安装集群下python连接hbase之安装thrift

    简介: python连接hbase是需要通过thrift连进行连接的,ambari安装的服务中貌似没有自带安装hbase的thrift,我是看配置hbase的配置名称里面没有thrift,cdh版本的 ...

  6. dotnetcore 与 hbase 之二——thrift 客户端的制作

    说明 在上一篇文章dotnetcore 与 hbase 之一--hbase 环境准备结束后,我们已经有了 hbase 数据库环境.接下来就可以利用 thrift 生成 c# hbase 客户端了.如果 ...

  7. HBase介绍

    欢迎和大家交流技术相关问题:邮箱: jiangxinnju@163.com博客园地址: http://www.cnblogs.com/jiangxinnjuGitHub地址: https://gith ...

  8. hbase 新增节点

    关于Hbase的集群管理 http://www.linuxidc.com/Linux/2012-07/65909.htm 1.如果只增加集群的存储量,建议增加Hadoop datanode节点. 方法 ...

  9. HBase简介(很好的梳理资料)

    http://www.tuicool.com/articles/iieIz2 一.   简介 history  started by chad walters and jim 2006.11 G re ...

随机推荐

  1. 利用Azure虚拟机安装Dynamics 365 Customer Engagement之五:安装SQL Server

    我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...

  2. 微信小程序获取input输入框内容

    1.wxml <input class="weui-input" type='number' bindinput="emailInput"/>   ...

  3. Android开发与Sequoyah的安装问题

    首次接触Android开发,在搭建开发环境时遇到困难,写出来和大家分享分享. 使用的ide为捆绑了adt插件和android sdk的eclipse adt bundle,无需安装android sd ...

  4. linux环境下卸载oracle 11g

    1.停库[oracle@testdb ~]$ sqlplus / as sysdbaSQL> shutdown immediateDatabase closed.Database dismoun ...

  5. 关于git远程

    1.注册github的账户(官网;github.com ) 2.新建一个项目(在右上角点击+,选择New repository ),输入项目名和项目描述,其他可根据自己项目选填,创建完成后可查看到ht ...

  6. 基础知识 Asp.Net MVC EF各版本区别

    原文:https://www.cnblogs.com/liangxiaofeng/p/5840754.html 2009年發行ASP.NET MVC 1.0版 2010年發行ASP.NET MVC 2 ...

  7. 报错:Something is already running on port 8000.

    在用react框架的时候,用cnpm run dev命令执行项目时,有时会出现这种错误, 这是因为你之前执行过该命令,但是没关闭,解决办法是打开任务管理器, 在进程中找到node.exe,右键关闭这个 ...

  8. wepy安装后提示Cannot read property 'addDeps'

    最近准备做一个微信小程序,以前一直用的小程序原始api做,但是这次准备用一个框架来做练习,当然在做之前需要比较一下现在小程序框架的优缺点. 经过认真挑选,选定wepy,Taro,uni-app,mpv ...

  9. 前端笔记之Vue(四)UI组件库&Vuex&虚拟服务器初识

    一.日历组件 new Date()的月份是从0开始的. 下面表达式是:2018年6月1日 new Date(2018, 5, 1); 下面表达式是:2018年5月1日 new Date(2018, 4 ...

  10. URLDecoder异常Illegal hex characters in escape (%)

    URLDecoder对参数进行解码时候,代码如: URLDecoder.decode(param,"utf-8"); 有时候会出现类似如下的错误: URLDecoder异常Ille ...