Hbase 客户端批量写入数据

Hbase 客户端批量写入数据,第1张

org.apache.hadoop.hbase.client.BufferedMutator主要用来对HBase的单个表进行 *** 作。它和Put类的作用差不多,但是主要用来实现批量的异步写 *** 作。

可以从Connection的实例中获取BufferedMutator的实例。在使用完成后需要调用close()方法关闭连接。对BufferedMutator进行配置需要通过BufferedMutatorParams完成。

BufferedMutator接收发送来的Put数据后,会根据某些因素(比如接收的Put数据的总量)启发式地执行Batch Put *** 作,且会异步的提交Batch Put请求。

BufferedMutator也可以用在一些特殊的情况上。多线程作业的每个线程将会拥有一个独立的BufferedMutator对象。

一个独立的BufferedMutator也可以用在大容量的在线系统上来执行批量Put *** 作,但是这时需要注意一些极端情况比如JVM异常或机器故障,此时有可能造成数据丢失。

官方源码路径: https://github.com/apache/hbase/blob/master/hbase-examples/src/main/java/org/apache/hadoop/hbase/client/example/BufferedMutatorExample.java

主要有三种方法:

1、Put API

Put API可能是将数据快速导入HBase表的最直接的方法。但是在导入【大量数据】时不建议使用!但是可以作为简单数据迁移的选择,直接写个代码批量处理,开发简单、方便、可控强。

2、MapReduce Job

推荐使用sqoop,它的底层实现是mapreduce,数据并行导入的,这样无须自己开发代码,过滤条件通过query参数可以实现。

Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将MySQL中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到Mysql中。

参考Index of /docs。

采用如下命令:sqoop import

--connect jdbc:mysql://localhost/db

--username root -P

--table mysql_order

--columns "id,name"

--hbase-table hbase_order

--column-family f

--hbase-row-key id

--query "select id,name from mysql_order where..."

-m 1

3、采用Bulk load装载数据

bulk-load的作用是用mapreduce的方式将hdfs上的文件装载到hbase中,对于海量数据装载入hbase非常有用。

需要将MySQL的表数据导出为TSV格式(因为后面使用Import TSV工具),还需要确保有一个字段可以表示HBase表行的row key。

将MySQL中大量数据导入到Hbase有什么好的方法

:使用sqoop工具。 1、在行键选择那里,通过用“”,将需要做行键的多个列写在一起就可以了。 2、例如要将a和b列同时做行键,那么--hbase-row-key "a,b"就可以了。 Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql


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

原文地址:https://54852.com/sjk/6777148.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存