hbase(一) : HTable

hbase(一) : HTable,第1张

hbase13

HTable 是我们对数据读取, *** 作的入口, implements HTableInterface, RegionLocator

内部构造

有一个检查 的动作待详细查看

关于BufferedMutator, 是用来缓存客户端的 *** 作的, hbase 将客户端的DML抽象成了 Mutation , 子类有: Append, Delete, Increment, Put *** 作

put方法将Put对象包装成Mutation,交给BufferedMutator, 到达设置的大小限制,或者主动调用flush *** 作, 会触发 backgroundFlushCommits(boolean synchronous) *** 作, 然后Mutation由 AsyncProcess 提交,详细查看 BufferedMutatorImpl 类

由 AscncProcess 提交后, (注释:Action类是将行与对应 *** 作结合的类), 由connection去寻找每一行对应的region位置, 包装action, server, region等信息添加到 MutiAction 中去, 这个类持有按照region分组的actions,

然后会对每个action都创建 SingleServerRequestRunnable (rpc caller 和rpc callable, caller call callable), 交给线程池去运行

删除 *** 作很简单: 创建 RegionServerCallable , 然后rpc工厂类创建rpc caller来调用它

get和scan都是继承了Query

get很简单:首先检查,这个get是否只是检查数据存在否, 并且检查是否指定了一致性等级(默认 (ConsistencySTRONG) ), 之后创建rpc请求Request, 如果 不是强一致性ConsistencyTIMELINE , 则调用 RpcRetryingCallerWithReadReplicas , 它可以从replica上读取, 返回的数据被标记为stale(读 *** 作是通过 ConsistencyTIMELINE ,然后读RPC将会首先发送到主region服务器上,在短时间内(hbaseclientprimaryCallTimeoutget默认为10ms),如果主region没有响应RPC会被发送到从region。 之后结果会从第一个完成RPC的返回。如果响应是来自主region副本,我们就会知道数据是最新的,ResultisStale() API是检查过期数据,如果结果是 从region返回,那么ResultisStale()为true,然后用户就可以检查关于过期数据可能的原因。)

当replica_id=0的regin不可以时候, 给所有的replica region发送请求,获取第一个从这些replica返回的数据, 客户端可以 ResultisStale()检查是否是来自副本的数据

Scan 类可以设置一系列的属性, startkey,endkey, 过滤器, 版本,缓存,最大取回大小等等, 但是获取数据是由 getScanner(Scan)返回的 ResultScanner *** 作的

返回的 ResultScanner 有small, Reversed,big和纯client 的不同,

什么是small scan

见 >

方法有两种:

1一种是通过Java,直接读取数据,然后在插入hive中

2第二种是整合hbase,hive。

整合后,再创建一个表,然后将数据导入新建的hive表中

第一步,启动hadoop,命令:/start-allsh

第二步,启动hive,命令:

/hive --auxpath /home/dream-victor/hive-060/lib/hive_hbase-handlerjar,/home/dream-victor/hive-060/lib/hbase-0203jar,/home/dream-victor/hive-060/lib/zookeeper-322jar -hiveconf hbasemaster=127001:60000

这里,-hiveconf hbasemaster=指向自己在hbase-sitexml中hbasemaster的值

第三步,启动hbase,命令:/start-hbasesh

第四步,建立关联表,这里我们要查询的表在hbase中已经存在所以,使用CREATE EXTERNAL TABLE来建立,如下:

CREATE EXTERNAL TABLE hbase_table_2(key string, value string)

STORED BY 'orgapachehadoophivehbaseHBaseStorageHandler'

WITH SERDEPROPERTIES ("hbasecolumnsmapping" = "data:1")

TBLPROPERTIES("hbasetablename" = "test");

�0�2hbasecolumnsmapping指向对应的列族;多列时,data:1,data:2;多列族时,data1:1,data2:1;

�0�2hbasetablename指向对应的表;

�0�2hbase_table_2(key string, value string),这个是关联表

我们看一下HBase中要查询的表的结构,

以上就是关于hbase(一) : HTable全部的内容,包括:hbase(一) : HTable、java *** 作hbase数据库读取数据时运行代码到new h1table就不动了,跟卡住了一样。会的大神们可以加、求助java怎么把HBase数据读出并导入Hive中等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9826152.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存