近期着手的一个项目需要将我方数据存储到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. LeetCode刷题191120

    博主渣渣一枚,刷刷leetcode给自己瞅瞅,大神们由更好方法还望不吝赐教.题目及解法来自于力扣(LeetCode),传送门. 算法: 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位 ...

  2. cookies和sessions组件

    目录 cookie与session cookie介绍 session介绍 token django操作cookie 设置cookie 获取cookie 删除cookie 基于cookie实现的登录认证 ...

  3. Linux防火墙firewall和iptables的使用

    防火墙是整个数据包进入主机前的第一道关卡. Linux中有两种防火墙软件,ConterOS 7.0以上使用的是 firewall,ConterOS 7.0以下使用的是 iptables,本文将分别介绍 ...

  4. JUC-1-volatile

    什么是volatile关键字      volatile是轻量级同步机制,与synchronized相比,他的开销更小一些,同时安全性也有所降低,在一些特定的场景下使用它可以在完成并发目标的基础上有一 ...

  5. c++用控制符控制输出格式

    #include<iostream> #include<cstdio> #include<iomanip> using namespace std; int mai ...

  6. Educational Codeforces Round 76 (Rated for Div. 2) D. Yet Another Monster Killing Problem 贪心

    D. Yet Another Monster Killing Problem You play a computer game. In this game, you lead a party of

  7. python集合、元组、字典

    主要内容: 2.集合 3.元组 4.字典 复习: 字符串和元组一样,只能读不能写.列表和字典可以嵌套任何东西,列表可以嵌套列表 L = list("hello")  # L = [ ...

  8. Java 异常面试问题与解答

    Java 提供了一种健壮且面向对象的方法来处理称为 Java异常处理的异常情况. 1. Java中的异常是什么? 异常是在程序执行期间可能发生的错误事件,它会破坏其正常流程.异常可能源于各种情况,例如 ...

  9. IT兄弟连 Java语法教程 综合案例

    1.案例需求 编写程序,模拟斗地主游戏洗牌和发牌的流程. 2.应用知识 ●  数组的声明 ●  数组的遍历 ●  for循环 ●  if-else分支结构 3.需求解析 模拟斗地主游戏洗牌和发牌,需要 ...

  10. pytest框架之fixture前置和后置

    一.conftest.py 定义公共的fixture,多个测试类中都可以调用 pytest提供了conftest.py文件,可以将fixture定义在此文件中 运行测试用例时,不需要去导入这个文件,会 ...