Hadoop中的HBase有多种数据访问方式,ubuntu里可以用hbase shell查看操作hbase数据库,但windows平台下需要用thrift对它进行访问。

例如hadoop安装在/usr/local/hadoop,hbase在/usr/local/hbase,thrift在/usr/local/thrift,则hbase.thrift文件应该使用 hbase/src/main/resources/org/apache/hadoop/hbase/thrift/hbase.thrift这个文件。thrift2目录下的hbase.thrift生成的方法不同,不好用。

1. 到thrift目录下,运行

bin/thrift -gen csharp /usr/local/hbasesrc/main/resources/org/apache/hadoop/hbase/thrift/hbase.thrift

会在当前目录生成gen-csharp文件夹,运行 zip -r cs.zip gen-csharp 打包到cs.zip,用ftp传输给windows。

2. 把thrift目录里的thrift c#访问类代码也打包传输到windows。

/usr/local/thrift/lib/csharp,src目录里有Thrift.csproj

3. 建立TestHbaseClient控制台程序,把Thrift项目加入solution。建立HBaseCommon项目,把gen-csharp里的文件都加入到此项目,最好给每个文件都加上命名空间。HBaseCommon引用Thrift,TestHbaseClient引用其它两个项目。

在Main函数里:

 TTransport transport = new TSocket("192.168.16.105", );
TProtocol tProtocol = new TBinaryProtocol(transport);
var client = new Hbase.Client(tProtocol);
transport.Open(); List<byte[]> tbs = client.getTableNames();
foreach (byte[] tb in tbs)
{
string tn = Encoding.UTF8.GetString(tb);
Console.WriteLine("table:" + tn);
} List<TRowResult> reslut = client.getRow(Encoding.UTF8.GetBytes("case_info"), Encoding.UTF8.GetBytes("row1"), null);
foreach (var key in reslut)
{
Console.WriteLine(Encoding.UTF8.GetString(key.Row));
foreach (var k in key.Columns)
18 {
19 Console.Write(Encoding.UTF8.GetString(k.Key) + "\t");
Console.WriteLine(Encoding.UTF8.GetString(k.Value.Value));
}
}

4. 运行这段代码,会报错,连不上服务器,需要到hbase里设置一下,并启动thrift服务。

修改/usr/local/hbase/conf/hbase-site.xml,先加个伪分布式进行测试:

<property>

<name>hbase.rootdir</name>

<value>/home/hadoop/hbasedir</value>

</property>

到/usr/local/hbase目录下重启hbase服务

bin/hbase-start.sh

再运行bin/hbase-daemon.sh start thrift

现在就可以用C#去访问hbase数据库的内容了。

windows平台下用C#访问HBase的更多相关文章

  1. Windows平台下Git服务器搭建

    第一步:下载Java,下载地址:http://www.java.com/zh_CN/ 第二步:安装Java.安装步骤不再详述. 第三步:配置Java环境变量. 右键”计算机” => ”属性” = ...

  2. windows平台下的oracle ORA-01031的解决方法

    今天下午遇到一个很怪异的问题,在windows平台下sqlplus  / as sysdba登陆数据库,提示权限不足, 当时就纳闷了,sys用户登陆数据库还能权限不足,问题出现了,就开始寻找解决方法呗 ...

  3. windows平台下nginx+PHP环境安装

    因为日常工作在windows下,为方便在window是下进行PHP开发,需要在windows平台下搭建PHP开发环境,web服务器选择nginx,不过windows版本的nginx性能要比Linux/ ...

  4. Windows平台下MySQL常用操作与命令

    Windows平台下MySQL常用操作与命令 Windows平台下MySQL常用操作与命令,学习mysql的朋友可以参考下. 1.导出整个数据库 mysqldump -u 用户名 -p --defau ...

  5. [转]Windows平台下Makefile学习笔记

    Windows平台下Makefile学习笔记(一) 作者:朱金灿 来源:http://blog.csdn.net/clever101 决心学习Makefile,一方面是为了解决编译开源代码时需要跨编译 ...

  6. Windows平台下PHP开发环境的配置

    Windows平台下PHP开发环境的配置 一.基本环境 1.Windows XP 32位 2.Apache 2.2.25,下载地址:http://mirror.bit.edu.cn/apache/ht ...

  7. Mac平台与Windows平台下AndroidStudio增量升级

    Android Studio增量升级什么情况下使用最合适呢? 比如现在的as版本是2.2版本,而你的as版本2.0版本,这个时候点Check For Updates就没有反应了,因为你已经2个有版本没 ...

  8. Windows 平台下Git 服务器搭建

    由于项目中一直在使用git作为版本管理,自己对git的理解.使用都还不是怎么的熟悉,所以准备深入了解一下git及一些常用命令的使用,于是干脆把服务端架上,通过自己的PC作为服务端同时作为客户端的角色进 ...

  9. windows平台下VLC2.0.5编译

    windows平台下VLC2.0.5编译说明 时隔一年多,又要搞流媒体了,不过这次是要做流媒体服务器. 暂时决定使用vlc+ffmpeg+live555,虽然听有些前辈说这个组合的性能较差,只能作为学 ...

随机推荐

  1. signal 信号具体含义解释~

    ) SIGHUP 本信号在用户终端连接(正常或非正常)结束时发出,通常是在终端的控 制进程结束时, 通知同一session内的各个作业,这时它们与控制终端不再关联. ) SIGINT 程序终止(int ...

  2. stl_hash_map.h

    stl_hash_map.h // Filename: stl_hash_map.h // Comment By: 凝霜 // E-mail: mdl2009@vip.qq.com // Blog: ...

  3. tf.random_normal()函数

    tf.random_normal()函数用于从服从指定正太分布的数值中取出指定个数的值. tf.random_normal(shape, mean=0.0, stddev=1.0, dtype=tf. ...

  4. Java 利用Gson将json字符串转换为List<Map<String, String>>

    json字符串类似于: [ { "userPhone": "123", "userNo": "123-2", " ...

  5. 转载:【菜鸟玩Linux开发】通过MySQL自动同步刷新Redis

    转载: http://www.cnblogs.com/zhxilin/archive/2016/09/30/5923671.html

  6. LeetCode Construct the Rectangle

    原题链接在这里:https://leetcode.com/problems/construct-the-rectangle/ 题目: For a web developer, it is very i ...

  7. Java How to Iterate Map

    常用iterate 方法 Map<Integer, String> m = new HashMap<Integer, String>(); for(Map.Entry<I ...

  8. CH5E02 [IOI1999]花店橱窗[暴力dp]

    众所周知,这个人太菜了,所以她又来切水题了. 显然设计状态表示第$i$朵花放第$j$瓶中的最大价值.然后瞎转移一波是n三方的,加个前缀max变成n方就水过去了. 当然这题可以搜索剪枝的. 虐lyd书上 ...

  9. 四、python沉淀之路--元组

    一.元组基本属性 1.元组不能被修改,不能被增加.不能被删除 2.两个属性 tu.count(22)       #获取指定元素在元组中出现的次数tu.index(22)      #获取指定元素的缩 ...

  10. bzoj 3505 [Cqoi2014]数三角形——排列组合

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3505 好题!一定要经常回顾! 那个 一条斜线上的点的个数是其两端点横坐标之差和纵坐标之差的g ...