文档章节

HBase导入大数据三大方式之(二)——importtsv +completebulkload 方式

Zero零_度
 Zero零_度
发布于 2017/02/09 09:17
字数 599
阅读 62
收藏 0

大数据时,经常需要用到将大量格式化的文本数据导入到Hbase中。此处就用到的三种方式:Hive类SQL语句方式、importtsv +completebulkload 方式、mapreduce+completebulkload 方式,做下简单示例。上篇介绍了hive类SQL语句方式,现在介绍importtsv +completebulkload 方式:

实例中,我以虚拟话单作为需要导入的数据,格式上篇文章中有介绍。

 

1、  首先在hive shell里面建表:

2、  建hive识别的hbase表,方便以后做hive查询,其中只有一个列组info:

预处理脚本方式需要6.5mins 10G。数据导入hive数据表需要15mins 10G。

把txt数据传到hdfs上,目前用put命令。该阶段耗时25分钟。

 

[java] view plain copy

 在CODE上查看代码片派生到我的代码片

  1. CREATE TABLE bill(00_selfnumber string,01_day string,02_hour string,03_duration string,04_calltype string, 05_targetnumber string, 06_address string, 07_longdtype string, 08_basecost float, 09_longdcost float, 10_infocost float,11_privilege string) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping" = "info:01_day,info:02_hour,info:03_duration,info:04_calltype,info:05_targetnumber,info:06_address,info:07_longdtype,info:08_basecost,info:09_longdcost,info:10_infocost,info:11_privilege") TBLPROPERTIES ("hbase.table.name" = "bill");  

 

3、使用importtsv命令,注意文本中的分隔符是","

//该过程花费时间较长:13:52开始——17:23结束耗时3.5小时 10G

bin/Hadoop jar/usr/hadoop/hbase-0.92.1-cdh4.1.5/hbase-0.92.1-cdh4.1.5-security.jar importtsv-Dimporttsv.separator="," -Dimporttsv.bulk.output=/user/hadoop/output-Dimporttsv.columns=HBASE_ROW_KEY,info:day,info:hour,info:duration,info:calltype,info:targetnumber,info:address,info:longdtype,info:basecost,info:longdcost,info:infocost,info:privilegesheet /input

 

4、使用completebulkload加载数据

//这个过程很快,瞬间完成。

 

bin/hadoop jar/usr/hadoop/hbase-0.92.1-cdh4.1.5/hbase-0.92.1-cdh4.1.5-security.jar completebulkload /user/hadoop/output sheet

查询:1分钟。

 

注意:

 

注意completebulkload 导入命令只能执行一次。

报错:

1、NoClassDefFoundError:org/apache/hadoop/hbase/HBaseConfiguration

解决办法:打jar包的时候没有把用到的lib打包进去,建个lib,把要用到的jar放里面一起打包。

2、zookeeperException

解决办法:zookeeper没有找到,尝试:1、关闭防火墙;2、hadoop的hadoop-env.sh 里面配置HADOOP_CLASSPATH包含hbase的一些jar,core-site.xml里面配置好zookeeper的几个server。重启hadoop、hbase、zookeeper。

3、Caused by:java.io.FileNotFoundException: HFileOutputFormat dir /user/hadoop/output notfound

解决办法:命令里面要写完整hdfs的路径,不然找不到。

4、ERROR mapreduce.LoadIncrementalHFiles:IOException during splitting
Java.util.concurrent.ExecutionException:org.apache.hadoop.hbase.io.hfile.CorruptHFileException: Problem reading HFileTrailer from file hdfs://master:9000/user/hadoop/output/clusters-0/part-00004

load一次就相当于剪切了,再次load就会出错。

 

OK!GOOD LUCK!小伙伴们加油!

本文转载自:http://blog.csdn.net/luckymelina/article/details/22887681

下一篇: HBaseUtil
Zero零_度
粉丝 69
博文 1258
码字总数 257684
作品 0
程序员
私信 提问
CompleteBulkLoad

CompleteBulkLoad completebulkload功能是将是将StoreFiles移动到Hbase表中,一般先通过importtsv生成StoreFiles. 生成StoreFiles 两种方式生成文件 Explicit Classname Driver 使用 两种方式...

Yulong_
2017/03/06
0
0
hbase在yarn上运行rowcounter,mapper数怎么一直是1,集群有4个节点

大家好, 我在hadoop yarn上运行hbase自带的rowcounter,做行数统计,使用importtsv导入数据到hbase中,然后使用rowcounter进行行数统计。大表有500GB,集群有4个节点,但是运行后mapper数目...

nicolebb
2014/10/21
832
0
bulk-load装载hdfs数据到hbase小结

bulk-load的作用是用mapreduce的方式将hdfs上的文件装载到hbase中,对于海量数据装载入hbase非常有用,参考http://hbase.apache.org/docs/r0.89.20100621/bulk-loads.html: hbase提供了现成...

超人学院
2015/06/01
0
0
利用BulkLoad导入Hbase表

1、插入HBase表传统方法具有什么问题? 我们先看下 HBase 的写流程: 通常 MapReduce 在写HBase时使用的是TableOutputFormat方式,在map/reduce中直接生成put对象写入HBase,该方式在大量数据...

混绅士
2018/06/28
0
0
hadoop执行分布式Process

要把N个超级大表导入HBase,N是按月来分的,表:亿+的行数,100+的字段。测试过sqoop,JDBC,性能都不满意,对任务失败重做也很麻烦,HBase的批量导出还靠谱点,但这样导入HBase有几个麻烦的...

nubo
2012/08/31
0
8

没有更多内容

加载失败,请刷新页面

加载更多

Netty源码学习(一)--导入IDEA并编译

1.从github下载最新的Netty稳定版本源码 2.解压源码文件夹 3.导入IDEA 4.跳过checkstyle和xml validate <plugin> <artifactId>maven-checkstyle-plugin</artifactId> <version>2.12.......

湖之风情
3分钟前
0
0
电商网站用户端FE

需求拆分原则 1、单个迭代不宜太大 2、需求可交付,能够形成功能闭环 3、有成本意识,遵循二八原则 4、有预期的价值体现 提炼核心需求 用户端:商品、购物车、下单、支付、订单、用户 后台管...

星闪海洋
14分钟前
0
0
Awesome Blockchain 区块链技术导航

区块链技术导航:收集整理最全面最优质的区块链(BlockChain)技术开发相关资源。 以后找不到文档资料的时候去导航站看看。 先亮个像,我长这样: 导航站内容 区块链开发所涉及的资源: 如 项目...

Tiny熊
18分钟前
0
0
聊聊我的第一篇10万+,同时反驳某些评论

元旦的时候,我立了一个Flag,今年要写一篇10万+,现在目标算是完成一半了。 终于有了一篇10万+ 知乎后台显示我的回答《如何衡量一个人的 JavaScript 水平?》的阅读量已经超过了10万,具体截...

Fundebug
24分钟前
0
0
ping的用法

ping的用法: -t ping指定的主机,直到停止。若要查看统计信息并继续操作-请键入 Control-Break; 若要停止-请键入Control-C。 -a 将地址解析成主机名。 -n count 要发送的回显请求数。 -l s...

WinkJie
26分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部