HBase ImportTSV工具使用

简介: HBase ImportTSV工具使用

1 ImportTSV功能描述

将tsv(也可以是csv,每行数据中各个字段使用分隔符分割)格式文本数据,加载到HBase表中。

1)、采用Put方式加载导入

2)、采用BulkLoad方式批量加载导入

使用如下命令,查看HBase官方自带工具类使用说明:

HADOOP_HOME=/export/servers/hadoop
HBASE_HOME=/export/servers/hbase
HADOOP_CLASSPATH=`${HBASE_HOME}/bin/hbase mapredcp`:${HBASE_HOME}/conf
${HADOOP_HOME}/bin/yarn jar ${HBASE_HOME}/lib/hbase-server-1.2.0-
cdh5.14.0.jar

执行上述命令提示如下信息:

An example program must be given as the first argument.
Valid program names are:
CellCounter: Count cells in HBase table.
WALPlayer: Replay WAL files.
completebulkload: Complete a bulk data load.
copytable: Export a table from local cluster to peer cluster.
export: Write table data to HDFS.
exportsnapshot: Export the specific snapshot to a given FileSystem.
import: Import data written by Export.
importtsv: Import data in TSV format.
rowcounter: Count rows in HBase table.
verifyrep: Compare the data from tables in two different clusters.

翻译:


一个示例程序必须作为第一个参数给出。

有效的程序名是:

CellCounter: HBase表的cell数。

WALPlayer:重放WAL文件。

completebulkload:完成批量数据加载。

copytable:从本地集群导出表到对端集群。

export:将表数据写入HDFS。

exportsnapshot:将特定的快照导出到给定的文件系统。

import:导入Export写入的数据。

importtsv:导入TSV格式的数据。

rowcounter: HBase表的行数。

verifyrep:比较来自两个不同集群中的表的数据。


其中 importtsv 就是将文本文件(比如CSV、TSV等格式)数据导入HBase表工具类,使用

说明如下:

Usage: importtsv -Dimporttsv.columns=a,b,c <tablename> <inputdir>
The column names of the TSV data must be specified using the -
Dimporttsv.columns
option. This option takes the form of comma-separated column names, where
each
column name is either a simple column family, or a columnfamily:qualifier.
The special column name HBASE_ROW_KEY is used to designate that this column
should be used as the row key for each imported record.
To instead generate HFiles of data to prepare for a bulk data load, pass
the option:
-Dimporttsv.bulk.output=/path/for/output
'-Dimporttsv.separator=|' - eg separate on pipes instead of tabs
For performance consider the following options:
 -Dmapreduce.map.speculative=false
 -Dmapreduce.reduce.speculative=false

翻译:

用法:importtsv -Dimporttsv。 列= a, b, c <表> < inputdir >之类 TSV数据的列名必须使用-指定 Dimporttsv.columns 选择。 该选项采用逗号分隔的列名形式,其中 每一个 列名可以是一个简单的列族,也可以是一个列族:限定符。 特殊的列名HBASE_ROW_KEY用于指定该列 应该用作每个导入记录的行键。 要代替生成数据的HFiles来准备批量数据加载,请通过选择:

-Dimporttsv.bulk.output=/path/for/output
'-Dimporttsv.separator=|' - eg separate on pipes instead of tabs
For performance consider the following options:
 -Dmapreduce.map.speculative=false
 -Dmapreduce.reduce.speculative=false

2 直接导入Put方式

HADOOP_HOME=/export/servers/hadoop
HBASE_HOME=/export/servers/hbase
HADOOP_CLASSPATH=`${HBASE_HOME}/bin/hbase mapredcp`:${HBASE_HOME}/conf
${HADOOP_HOME}/bin/yarn jar ${HBASE_HOME}/lib/hbase-server-1.2.0-
cdh5.14.0.jar \
importtsv \
-
Dimporttsv.columns=HBASE_ROW_KEY,detail:log_id,detail:remote_ip,detail:s
ite_global_ticket,detail:site_global_session,detail:global_user_id,detai
l:cookie_text,detail:user_agent,detail:ref_url,detail:loc_url,detail:log
_time \
tbl_logs \
/user/hive/warehouse/tags_dat.db/tbl_logs

上述命令本质上运行一个MapReduce应用程序,将文本文件中每行数据转换封装到Put

对象,然后插入到HBase表中。

回顾一下:

大数据Sqoop借助Hive将Mysql数据导入至Hbase

3 转换为HFile文件,再加载至表

# 1. 生成HFILES文件
HADOOP_HOME=/export/servers/hadoop
HBASE_HOME=/export/servers/hbase
HADOOP_CLASSPATH=`${HBASE_HOME}/bin/hbase mapredcp`:${HBASE_HOME}/conf
${HADOOP_HOME}/bin/yarn jar ${HBASE_HOME}/lib/hbase-server-1.2.0-
cdh5.14.0.jar \
importtsv \
-Dimporttsv.bulk.output=hdfs://bigdata-
cdh01.itcast.cn:8020/datas/output_hfile/tbl_logs \
-
Dimporttsv.columns=HBASE_ROW_KEY,detail:log_id,detail:remote_ip,detail:
site_global_ticket,detail:site_global_session,detail:global_user_id,det
ail:cookie_text,detail:user_agent,detail:ref_url,detail:loc_url,detail:
log_time \
tbl_logs \
/user/hive/warehouse/tags_dat.db/tbl_logs
# 2. 将HFILE文件加载到表中
HADOOP_CLASSPATH=`${HBASE_HOME}/bin/hbase mapredcp`:${HBASE_HOME}/conf
${HADOOP_HOME}/bin/yarn jar ${HBASE_HOME}/lib/hbase-server-1.2.0-
cdh5.14.0.jar \
completebulkload \
hdfs://bigdata-cdh01.itcast.cn:8020/datas/output_hfile/tbl_logs \
tbl_logs

缺点:

1)、ROWKEY不能是组合主键

只能是某一个字段

2)、当表中列很多时,书写-Dimporttsv.columns值时很麻烦,容易出错

总结:这个工具导入一些小批量数据还是很不错的,但是不常用.

相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
&nbsp; 相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情:&nbsp;https://cn.aliyun.com/product/hbase &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
5月前
|
大数据 数据管理 分布式数据库
探索 HBase GUI 工具,助您轻松驾驭大数据世界!
从此告别繁琐,迎接大数据时代的新利器! #HBase #GUI #数据管理 #工具分享
245 2
探索 HBase GUI 工具,助您轻松驾驭大数据世界!
|
存储 分布式计算 Java
HBase 2.0.0 META 数据修复工具
HBase 2.0.0 META 数据修复工具 分享给那些使用了hbase2.0.0 因其他原因无法升级 又被坑的小伙伴们
4950 0
HBase 2.0.0 META 数据修复工具
|
Java Shell 分布式数据库
Hbase修复工具Hbck
Hbase修复工具是Hbck ,相关的问题有哪些呢?
769 0
Hbase修复工具Hbck
|
分布式计算 分布式数据库 Hbase
hbase数据同步工具—HashTable/SyncTable
本文介绍hbase数据同步工具—HashTable/SyncTable,实现集群内部或跨集群之间的数据同步操作
|
运维 分布式数据库 Apache
HBase指南 | HBase 2.0之修复工具HBCK2运维指南
在之前的HBase版本中,我们可以依赖hbck来帮助检查问题和修复问题,在新的版本上我们应该如何去处理呢?HBASE-19121[1]给了我们答案——HBCK2。 HBCK2目前发布了1.0版本,还在一直开发中,感兴趣的同学看看这个issue。
8155 1
|
分布式计算 大数据 测试技术
HBase2.0中的Benchmark工具 — PerformanceEvaluation
在项目开发过程中,我们经常需要一些benchmark工具来对系统进行压测,以获得系统的性能参数,极限吞吐等等指标。而在HBase中,就自带了一个benchmark工具—PerformanceEvaluation,可以非常方便地对HBase的Put、Get、Scan等API进行性能测试,并提供了非常丰富的参数来模拟各种场景。
6931 0
|
SQL 消息中间件 Java
ETL数据导入/导出工具 HData(支持JDBC、Hive、HDFS、HBase、Kafka等)
HData是一个异构的ETL数据导入/导出工具,致力于使用一个工具解决不同数据源(JDBC、Hive、HDFS、HBase、MongoDB、FTP、Http、CSV、Excel、Kafka等)之间数据交换的问题。
2167 0
|
分布式数据库 Hbase
HBase常用导入导出工具图示比较
HBase常用导入导出工具图示比较
927 0
|
运维 监控 分布式数据库
技术篇-HBase 2.0 之修复工具 HBCK2 运维指南
概述 目前社区已经发布了 HBase 的 2.0 版本,很多公司都希望去尝试新版本上的新功 能,但是不得不面对的问题就是当集群出了问题应该如何解决。在之前的 HBase版本中,我们可以依赖 hbck 来帮助检查问题和修复问题,在新的版本上我们应 该如何去处理呢?HBASE-19121[1]给了我们答案——HBCK2。
3394 0