使用 C# 访问增强版 Hbase(Lindorm)

简介: 如何使用 C# 访问增强版 Hbase(Lindorm)

首先通过链接 http://archive.apache.org/dist/thrift/0.12.0/thrift-0.12.0.tar.gz 下载 thrift 0.12.0 版本的 tar 包

通过 visual studio IDE 创建一个 .net framework 项目的类库解决方案
image.png
thrift 0.12.0 tar 包下载好之后,需要解压缩,接着到路径 thrift-0.12.0\thrift-0.12.0\lib\csharp\src 下,可以看到我们需要的文件
image.png

把图中圈出来的文件复制,然后跑到 visual studio 刚刚创建好的解决方案里,直接选中右边的解决方案名称然后粘贴即可,完成之后如下图:
image.png
这时候,我们还需要添加一些依赖。选中引用,右键点添加引用,在程序集里面找到 System.Web 进行添加
image.png
完成之后,即可选中解决方案,右键点生成,即可生成一个 aaa.dll 的文件,后面我们会需要依赖这个 aaa.dll
image.png

再通过链接 http://archive.apache.org/dist/thrift/0.12.0/thrift-0.12.0.exe 下载 thrift 的可执行文件,以及链接 https://hbaseuepublic.oss-cn-beijing.aliyuncs.com/hbase.thrift?spm=a2c4g.11186623.2.26.1de042ddV8UbdR&file=hbase.thrift 下载 hbase 的 thrift 定义文件。

下载完成后,打开命令行,跳转到对应的目录下,执行 thrift-0.12.0.exe --gen csharp hbase.thrift,这个命令会生成一个 gen-csharp 的文件夹
image.png
这时候,重复上面的步骤,再新建一个 .net framework 的类库解决方案,把 gen-csharp 文件夹下面的文件都拷贝到该解决方案下面,并且把上一步生成的 aaa.dll 在引用处进行添加,这时便能生成一个 bbb.dll 文件。(aaa.dll 在上一个解决方案对应目录下的 \bin\Debug 下能找到)

生成 aaa.dll 和 bbb.dll 之后,便能够编写简单的 demo 进行访问了。还是通过 visual studio 新建一个 .net framework 的控制台应用,在引用处,添加 aaa.dll 和 bbb.dll。下面我给出简单的 demo 代码,大致做了以下几件事:

  1. 初始化客户端
  2. 创建 namespace
  3. 创建 table
  4. put 一条数据
  5. get 一条数据并且打印出来
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Thrift.Protocol;
using Thrift.Transport;

namespace hbaseDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                Uri uri = new Uri("http://ld-bp1u7jrc0818gtyql-proxy-hbaseue-pub.hbaseue.rds.aliyuncs.com:9190");
                THttpClient transport = new THttpClient(uri);
                IDictionary<string, string> header = transport.CustomHeaders;
                header.Add("ACCESSKEYID", "root");
                header.Add("ACCESSSIGNATURE", "root");
                TProtocol tProtocol = new TBinaryProtocol(transport);
                var client = new THBaseService.Client(tProtocol);
                transport.Open();

                String ns = "guchi5";
                client.createNamespace(new TNamespaceDescriptor(ns));

                byte[] tableNameBytes = Encoding.UTF8.GetBytes("tablename");
                byte[] familyByte = Encoding.UTF8.GetBytes("f");
                TTableName tTableName = new TTableName(tableNameBytes);
                tTableName.Ns = Encoding.UTF8.GetBytes(ns);
                TTableDescriptor tTableDescriptor = new TTableDescriptor(tTableName);
                List<TColumnFamilyDescriptor> columns = new List<TColumnFamilyDescriptor>();
                columns.Add(new TColumnFamilyDescriptor(Encoding.UTF8.GetBytes("f")));
                tTableDescriptor.Columns = columns;
                client.createTable(tTableDescriptor, null);

                byte[] rowByte = Encoding.UTF8.GetBytes("row");
                List<TColumnValue> list = new List<TColumnValue>();
                list.Add(new TColumnValue(familyByte, Encoding.UTF8.GetBytes("q1"), Encoding.UTF8.GetBytes("value-guchi")));
                string namespaceAndTableName = ns + ":tablename";
                byte[] namespaceAndTableNameBytes = Encoding.UTF8.GetBytes(namespaceAndTableName);
                client.put(namespaceAndTableNameBytes, new TPut(rowByte, list));

                TGet tget = new TGet(rowByte);
                TResult result = client.get(namespaceAndTableNameBytes, tget);
                Console.WriteLine("RowKey:\n{0}", Encoding.UTF8.GetString(result.Row));
                //打印Qualifier和对应的Value
                foreach (var k in result.ColumnValues)
                {
                    Console.WriteLine("Family:Qualifier:" + "\n" + Encoding.UTF8.GetString(k.Qualifier));
                    Console.WriteLine("Value:" + Encoding.UTF8.GetString(k.Value));
                }
                Console.WriteLine("done");
            } catch (Exception e)
            {
                System.Console.WriteLine(e);
            }
        }
    }
}

运行上述代码能看到以下输出
image.png

需要注意以下 2 点:

  1. 替换代码中的 url 部分,换成你自己的实例对应的公网连接地址
  2. 参考文档,对你需要进行访问的实例开通白名单和公网访问地址 https://help.aliyun.com/document_detail/119565.html?spm=a2c4g.11186623.6.560.1de042ddV8UbdR
相关实践学习
云数据库HBase版使用教程
&nbsp; 相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情:&nbsp;https://cn.aliyun.com/product/hbase &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
3月前
|
分布式计算 分布式数据库 API
Spark与HBase的集成与数据访问
Spark与HBase的集成与数据访问
|
大数据 分布式数据库 Hbase
《玩转HBase和Lindorm大数据入门和实战》电子版地址
玩转HBase和Lindorm大数据入门和实战
109 0
《玩转HBase和Lindorm大数据入门和实战》电子版地址
|
算法 Java 大数据
访问HBase经常出现报错:ServerNotRunningYetException: Server xxx.xxx.xxx is not running yet
访问HBase经常出现报错:ServerNotRunningYetException: Server xxx.xxx.xxx is not running yet
|
XML 弹性计算 Shell
HBase Shell 访问|学习笔记
快速学习 HBase Shell 访问
136 0
|
存储 大数据 分布式数据库
《玩转HBase和Lindorm 大数据入门和实战》电子版地址
本书系统地介绍HBase和Lindorm的整体架构、理论知识,及在多种场景下的实战经验,供开发者学习并加以实践。开发者们阅读此书不仅能快速入门HBase数据库,也能将其运用到工作之中去。
83 0
《玩转HBase和Lindorm 大数据入门和实战》电子版地址
|
分布式计算 Java Hadoop
HBase集群搭建记录 | 云计算[CentOS8] | Maven项目访问HBase(下)
step3. 使用eclipse打开maven项目并配置 step4. 项目访问HBase
172 0
HBase集群搭建记录 | 云计算[CentOS8] | Maven项目访问HBase(下)
|
Java Linux 分布式数据库
HBase集群搭建记录 | 云计算[CentOS7] | Maven项目访问HBase(上)
写在前面 step1 Maven的下载与配置 1. 下载解压 2. 环境变量设置 3. 查看安装 4. 设置阿里云镜像[加速jar包下载] step2 Maven项目的创建 1.创建项目 2. 编译项目 3.测试项目 4.打包项目 5.安装项目
148 0
HBase集群搭建记录 | 云计算[CentOS7] | Maven项目访问HBase(上)
|
存储 NoSQL Cloud Native
重磅下载 | 玩转HBase和Lindorm 大数据入门和实战
本书系统性地介绍了HBase和Lindorm的整体架构、理论知识,及在多种场景下的实战经验,绝对是本年度最全最精的大数据入门和实战秘籍。
31614 0
重磅下载 | 玩转HBase和Lindorm 大数据入门和实战
|
存储 运维 供应链
云数据库HBase增强版全文索引助力收钱吧低成本、高性能实现订单搜索
收钱吧,隶属于上海喔噻互联网科技有限公司,是中国移动支付服务商领军者,致力于用网络和数据的力量服务线下实体商家。收钱吧不仅为商家提供专业移动支付收款工具,同时也是为商家提供金融、广告、营销管理、供应链等多种服务的生意帮手。2014年12月,收钱吧正式上线,开创了中国移动支付市场“一站式收款”时代,并成功研发了“收钱吧扫码王”等全场景智能收款设备,产品获得多项国家专利。目前收钱吧服务超过330万商家,日服务3000万人次。
1411 0
云数据库HBase增强版全文索引助力收钱吧低成本、高性能实现订单搜索
|
分布式计算 安全 Shell
Maxcompute Spark 访问 阿里云 Hbase
引子 本来这个东西是没啥好写的,但是在帮客户解决问题的时候,发现链路太长,不能怪客户弄不出来,记录一下 需求列表 MaxCompute Spark包 (写文章时刻为版本 0.32.1, 请自行更新,本文不是文档) Spark 配置 spark.
Maxcompute Spark 访问 阿里云 Hbase

热门文章

最新文章