【HBase】(八)往 HBase 导入数据的几种操作

简介: 【HBase】(八)往 HBase 导入数据的几种操作

文章目录


一、前言

二、利用ImportTsv将csv文件导入到HBase

三、利用completebulkload将数据导入到HBase

四、利用Import将数据导入到HBase


一、前言


HBase作为Hadoop DataBase,除了使用put进行数据导入之外,还有以下几种导入数据的方式:


(1)使用importTsv功能将csv文件导入HBase;


(2)使用import功能,将数据导入HBase;


(3)使用BulkLoad功能将数据导入HBase。


二、利用ImportTsv将csv文件导入到HBase


命令:

格式:hbase [类] [分隔符] [行键,列族] [表] [导入文件]
bin/hbase  org.apache.hadoop.hbase.mapreduce.ImportTsv  -Dimporttsv.separator="," 
-Dimporttsv.columns=HBASE_ROW_KEY,cf hbase-tb1-001 /simple.csv


simple.csv内容如下:

1,"Tony"
2,"Ivy"
3,"Tom"
4,"Spark"
5,"Storm"


创建文件
[root@hadoop1 datamove]# cat simple.csv
1,"Tony"
2,"Ivy"
3,"Tom"
4,"Spark"
5,"Storm"
上传文件
[root@hadoop1 datamove]# hdfs dfs -put simple.csv /liguodong
[root@hadoop1 datamove]# hdfs dfs -ls /liguodong
Found 5 items
-rw-r--r--   3 root supergroup         45 2015-07-06 11:13 /liguodong/simple.csv
创建表
hbase(main):001:0> create 'hbase-tb1-001','cf'
0 row(s) in 3.1120 seconds
=> Hbase::Table - hbase-tb1-001
执行mapreduce
[root@hadoop1 datamove]# hbase  org.apache.hadoop.hbase.mapreduce.ImportTsv  -Dimporttsv.separator="," 
-Dimporttsv.columns=HBASE_ROW_KEY,cf hbase-tb1-001 /liguodong/simple.csv
查看是否成功导入
hbase(main):003:0> scan 'hbase-tb1-001'
ROW                  COLUMN+CELL
 1                   column=cf:, timestamp=1436152834178, value="Tony"
 2                   column=cf:, timestamp=1436152834178, value="Ivy"
 3                   column=cf:, timestamp=1436152834178, value="Tom"
 4                   column=cf:, timestamp=1436152834178, value="Spark"
 5                   column=cf:, timestamp=1436152834178, value="Storm"
5 row(s) in 0.1490 seconds


三、利用completebulkload将数据导入到HBase


HBase支持bulkload的入库方式,它是利用hbase的数据信息按照特定格式存储在hdfs内这一原理,直接在HDFS中生成持久化的HFile数据格式文件,然后上传至合适位置,即完成巨量数据快速入库的办法。配和mapreduce完成,高效便捷,而且不占用region资源,增添负载,在大数据量写入时,能极大的提高写入效率,并降低对HBase节点的写入压力。


通过使用先生成HFile,然后再BulkLoad到HBase的方式来替代之前直接调用HTableOutputFormat的方法有如下的好处:


1、消除了对HBase集群的插入压力

2、提高了Job的运行速度,降低了Job的执行时间


利用completebulkload将数据导入到HBase


1、先通过lmportTsv生成HFile


命令:

hbase [类] [分隔符] [输出存储路径] [行键,列族] [表] [导入原始数据文件]
bin/hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.separator="," -Dimporttsv.bulk.output=/hfile_tmp 
-Dimporttsv.columns=HBASE_ROW_KEY,cf hbase-tbl-002 /simple.csv


2、通过completebulkload将数据导入表hbase-tbl-002


命令:

hadoop jar lib/hbase-server-0.96.0.jar completebulkload
 /hfile_tmp hbase-tbl-002


[root@hadoop1 datamove]# hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.separator="," 
-Dimporttsv.bulk.output=/liguodong/hfile_tmp -Dimporttsv.columns=HBASE_ROW_KEY,cf hbase-tbl-002 /liguodong/simple.csv
以上的指令,它会主动创建表hbase-tbl-002和文件夹hfile_tmp。
[root@hadoop1 datamove]# hdfs dfs -ls /liguodong
drwxr-xr-x   - root supergroup          0 2015-07-06 11:54 /liguodong/hfile_tmp
[root@hadoop1 datamove]# hdfs dfs -ls -R  /liguodong/hfile_tmp
-rw-r--r--   3 root supergroup          0 2015-07-06 11:54 /liguodong/hfile_tmp/_SUCCESS
drwxr-xr-x   - root supergroup          0 2015-07-06 11:54 /liguodong/hfile_tmp/cf
-rw-r--r--   3 root supergroup       1196 2015-07-06 11:54 /liguodong/hfile_tmp/cf/e20e3fe899de47a88ca476e05da2c9d7
hbase(main):008:0> scan 'hbase-tbl-002'
ROW                  COLUMN+CELL
0 row(s) in 0.0310 seconds
将数据导入表hbase-tbl-002
[root@hadoop1 datamove]# hadoop jar /opt/cloudera/parcels/CDH/lib/hbase/hbase-server-0.98.6-cdh5.3.4.jar completebulkload 
/liguodong/hfile_tmp hbase-tbl-002


四、利用Import将数据导入到HBase


1、HBase export工具导出的数据的格式是sequence file。


比如,在执行完命令bin/hbase org.apache.hadoop.hbase.mapreduce.Export hbase-tbl-002 /test-output后,hbase会启动一个MapReduce作业,作业完成后会在hdfs上面会生成sequence file格式的数据文件。


2、对于这类Sequence file格式的数据文件,HBase是可以通过Import工具直接将它导入到HBase的表里面的。


执行命令:

bin/hbase org.apache.hadoop.hbase.mapreduce.Import hbase-tbl-003 /test-output,随后hbase会启动一个MapReduce作业,然后表test会成功入数据。

导出到hdfs
[root@hadoop1 lib]# hbase org.apache.hadoop.hbase.mapreduce.Export hbase-tb1-001 /liguodong/test-output
创建新表
hbase(main):010:0> create 'hbase-tb1-003','cf'
0 row(s) in 0.4290 seconds
=> Hbase::Table - hbase-tb1-003
导入到hbase
[root@hadoop1 lib]# hbase org.apache.hadoop.hbase.mapreduce.Import hbase-tb1-003 /liguodong/test-output
验证
hbase(main):011:0> scan 'hbase-tb1-003'
ROW                  COLUMN+CELL
 1                   column=cf:, timestamp=1436152834178, value="Tony"
 2                   column=cf:, timestamp=1436152834178, value="Ivy"
 3                   column=cf:, timestamp=1436152834178, value="Tom"
 4                   column=cf:, timestamp=1436152834178, value="Spark"
 5                   column=cf:, timestamp=1436152834178, value="Storm"
5 row(s) in 0.0580 seconds


相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
6月前
|
分布式计算 资源调度 Hadoop
HBase表数据的读、写操作与综合操作
HBase表数据的读、写操作与综合操作
86 0
|
6月前
|
Java Shell 分布式数据库
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
157 0
|
Shell 分布式数据库 Apache
Hbase常用shell操作
Hbase常用shell操作
417 1
|
Java Shell 分布式数据库
HBase高级操作
HBase高级操作
295 0
|
6月前
|
分布式计算 Hadoop Shell
熟悉常用的HBase操作
熟悉常用的HBase操作
146 3
熟悉常用的HBase操作
|
6月前
|
分布式计算 Hadoop Shell
|
4月前
|
DataWorks 数据管理 大数据
DataWorks操作报错合集之在连接HBase时出现超时问题,该怎么解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
5月前
|
Java 大数据 API
【大数据】HDFS、HBase操作教程(含指令和JAVA API)
【大数据】HDFS、HBase操作教程(含指令和JAVA API)
149 0
【大数据】HDFS、HBase操作教程(含指令和JAVA API)
|
6月前
|
消息中间件 关系型数据库 MySQL
实时计算 Flink版操作报错合集之使用 Event Time Temporal Join 关联多个 HBase 后,Kafka 数据的某个字段变为 null 是什么原因导致的
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
137 0
|
6月前
|
SQL 消息中间件 Kafka
实时计算 Flink版操作报错合集之使用 Event Time Temporal Join 关联多个 HBase 后,Kafka 数据的某个字段变为 null 是什么原因导致的
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
93 0
下一篇
无影云桌面