HBase数据导入的几种操作

数据导入有如下几种方式:

1.利用HBase提供的ImportTsv将csv文件导入到HBase

2.利用HBase提供的completebulkload将数据导入到HBase

3.利用HBase提供的Import将数据导入到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"

eg:

创建文件
[[email protected] datamove]# cat simple.csv
1,"Tony"
2,"Ivy"
3,"Tom"
4,"Spark"
5,"Storm"

上传文件
[[email protected] datamove]# hdfs dfs -put simple.csv /liguodong
[[email protected] 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
[[email protected] 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

eg:

[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
[[email protected] 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
[[email protected] 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

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-25 16:06:52

HBase数据导入的几种操作的相关文章

ImportTsv-HBase数据导入工具

一.概述 HBase官方提供了基于Mapreduce的批量数据导入工具:Bulk load和ImportTsv.关于Bulk load大家可以看下我另一篇博文. 通常HBase用户会使用HBase API导数,但是如果一次性导入大批量数据,可能占用大量Regionserver资源,影响存储在该Regionserver上其他表的查询,本文将会从源码上解析ImportTsv数据导入工具,探究如何高效导入数据到HBase. 二.ImportTsv介绍 ImportTsv是Hbase提供的一个命令行工具

Bulk Load-HBase数据导入最佳实践

一.概述 HBase本身提供了非常多种数据导入的方式,通常有两种经常使用方式: 1.使用HBase提供的TableOutputFormat,原理是通过一个Mapreduce作业将数据导入HBase 2.还有一种方式就是使用HBase原生Client API 这两种方式因为须要频繁的与数据所存储的RegionServer通信.一次性入库大量数据时,特别占用资源,所以都不是最有效的.了解过HBase底层原理的应该都知道,HBase在HDFS中是以HFile文件结构存储的,一个比較高效便捷的方法就是使

数据导入,导出 表操作

一.数据的导入导出 1.数据导入:把系统文件的内容保存到数据库的表里 默认只有数据库管理冲数据库服务器本机登录数据库才有数据导入权限 表结构要与文件内容匹配. 把/etc/passwd文件的内容保存到数据库服务器userdb库的userlist表中 mysql> createdatabase userdb; mysql> create table userlist( -> username  varchar(15) not null, -> password  char(1) no

Hbase数据导入导出

平时用于从生产环境hbase到导出数据到测试环境. 导入数据: import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.

HBase 数据导入 ImportTsv

ImportTsv 工具是通过map reduce 完成的.所以要启动yarn. 工具要使用jar包,所以注意配置classpath.ImportTsv默认是通过hbase api 插入数据的 [[email protected] work]$ cat /home/hadoop-user/.bash_profile # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi #

hbase0.96数据导入以及Kettle操作hbase问题

版本: cdh5.0.0+hadoop2.3.0+hbase0.96.1.1+Spoon5.0.1 一.HBase数据导入 HBase数据导入使用org.apache.hadoop.hbase.mapreduce.ImportTsv 的两种方式,一种是直接导入,一种是转换为HFile,然后再次导入. 1. HDFS数据为(部分): [[email protected] data]# hadoop fs -ls /input Found 1 items -rwxrwxrwx 1 hdfs supe

HBase 实战(1)--HBase的数据导入方式

前言: 作为Hadoop生态系统中重要的一员, HBase作为分布式列式存储, 在线实时处理的特性, 备受瞩目, 将来能在很多应用场景, 取代传统关系型数据库的江湖地位. 本篇博文重点讲解HBase的数据导入, 描述三种方式, Client API, Bulkload, 以及Hive Over HBase. *). Client API实现借助HBase的Client API来导入, 是最简易学的方式. Configuration config = HBaseConfiguration.crea

数据导入HBase最常用的三种方式及实践分析

数据导入HBase最常用的三种方式及实践分析         摘要:要使用Hadoop,需要将现有的各种类型的数据库或数据文件中的数据导入HBase.一般而言,有三种常见方式:使用HBase的API中的Put方法,使用HBase 的bulk load工具和使用定制的MapReduce Job方式.本文均有详细描述. [编者按]要使用Hadoop,数据合并至关重要,HBase应用甚广.一般而言,需要 针对不同情景模式将现有的各种类型的数据库或数据文件中的数据转入至HBase 中.常见方式为:使用H

优雅的将hbase的数据导入hive表

v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} wgx wgx 2 67 2016-04-02T15:15:00Z 2016-04-02T15:15:00Z 1 233 1332 11 3 1562 15.00 Clean Clean false 7.8 磅 0