首页
IT
登录
6mi
u
盘
搜
搜 索
IT
智能停车诱导系统--大数据部分--HBase数据导入(一)
智能停车诱导系统--大数据部分--HBase数据导入(一)
xiaoxiao
2026-05-24
6
把数据导入hbase这块当时花了我好大精力,试了四种方法都不成功,差点就用shell一个个生敲进去了。好在这段日子也找到了一些方法,下面就主要讲两种批量导入的方法吧:
(1)
ImportTsv
这
是Hbase提供的一个命令行工具,可以将存储在HDFS上的自定义分隔符(默认\t)的数据文件,通过一条命令方便的导入到HBase表中,对于大数据量导入非常实用,其中包含两种方式将数据导入到HBase表中:
第一种是使用TableOutputformat在reduce中插入数据。
第二种是先生成HFile格式的文件,再执行一个叫做CompleteBulkLoad的命令,将文件move到HBase表空间目录下,同时提供给client查询。
当时由于时间紧迫,用了第一种比较简单的。
1.先把需要导入的数据文件(把后缀改成.cvs)上传到HDFS(说明一下,我在HDFS上创建了一个hadoop用户,然后创建了一个input文件夹,所以HDFS上的实际上传路径是/user/hadoop/input,这里由于我是在hadoop用户下上传的,默认到input)
hdfs dfs -put /usr/local/hadoop/data_1/park1.cvs input
查看一下
hdfs dfs -ls input
可以看到HDFS中已经有了park1.cvs这个文件
2.用shell建一个停车场表--park_test
进入shell:
hbase shell
建表:
create 'park_test','info'
查看是否成功:
list
3.用importtsv向park_test表中导入数据(HDFS上的park1.cvs)
使用importtsv格式如下:
hadoop jar hbase
核心
jar
包位置
importtsv
(主类)
指定
RowKey
及列
指定分隔符(可选)
HBase
上表名
HDFS
源文件路径
输入命令:bin/hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.separator="," -Dimporttsv.columns=HBASE_ROW_KEY,info:name,info:lat,info:lon,info:type,info:price_1,info:price_2,info:price_3
park_test /user/hadoop/input/park1.cvs
是不是感觉要方,没办法,方法简单就得多动手
这个工具自动生成了导入hbase的MapReduce,所以可以看到黑框中有MR的运行过程:
来scan一下停车场表看是不是真的成功了:
scan 'park_test'
可以看到已经成功导入了,下一篇讲MapReduce批量导入。
转载请注明原文地址: https://ju.6miu.com/read-1310019.html
最新回复
(
0
)