最近在学习hbase,学到利用如何将数据导入到hbase中,采用的方式是批量导入:bulk load的方法,中间出现了一些问题,下面将执行的步骤记录一下,以供日后查阅: 说明:导入的方式是将csv文件的内容导入到hbase中。
1、首先是将csv文件上传到hdfs上。 hadoop fs -put simple.csv /user/username/ 上面的步骤是将simple.csv文件上传到hdfs中的/user/name中.说明:数据的间隔是制表符,若是逗号间隔符需要指定间隔符
2、通过hbase shell 界面创建相应的表
(1)进入shell界面: hbase shell
(2)创建表:create 'tablename','columnfamily'
3、通过mapreduce作业,生成Hfile文件
执行:hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.columns=HBASE_ROW_KEY,columnfamily -Dimporttsv.bulk.output=/hfile_tmp tablename /user/username/simple.csv (默认间隔符是制表符)
或者 hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.columns=HBASE_ROW_KEY,columnfamily -Dimporttsv.bulk.output=/hfile_tmp tablename -Dimporttsv.separator=, /user/username/simple.csv
4、此时mapreduce执行成功后,会在hdfs上生成一个目录,该目录就是上面的命令行指定的目录(如:-Dimporttsv.bulk.output=/hfile_tmp)。
但是该目录的权限是属于当前用户的,因此需要修改他的权限。
sudo -u hdfs hdfs dfs -chown -R hbase:hbase /hfile_tmp
5、执行最后一步,批量导入
hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles /hfile_tmp mytable