HBase使用命令运行mapreduce程序以及tsv,csv导入到HBase操作-05

10 篇文章 0 订阅

先配置hbase和hadoop的环境变量,因为它是使用命令执行mapreduce程序,环境变量只是临时用一下,不用永久配置到/etc/profile里面,执行export命令就是在当前会话中可以使用这个环境变量.

执行环境变量导入

$ export HBASE_HOME=/opt/modules/cdh/hbase-0.98.6-cdh5.3.6/

$ export HADOOP_HOME=/opt/modules/cdh/hadoop-2.5.0-cdh5.3.6

$ export HADOOP_CLASSPATH=`${HBASE_HOME}/bin/hbase mapredcp`

 案例一:统计person表中有多少行数据,也就是有多少个rowkey

/opt/modules/hadoop-2.5.0-cdh5.3.6/bin/yarn jar lib/hbase-server-0.98.6-cdh5.3.6.jar rowcounter person

执行的时候查看yarn客户端就会发现执行了一个mapreduce程序

就会把结果打印在控制台上

案例二:使用MapReduce任务将数据从文件中导入到HBase 

先说两种文件格式,tsv和csv,它们两个都可以使用excel打开

使用文本编辑这两个文件的时候,在tsc里面使用/t分隔符分开,在csv里使用逗号分隔开,然后就可以转换为excel格式

创建一个tsv文件

在HBase创建一个表,因为这个mapreduce程序不会自动创建表

然后把新创建的文件放到hdfs上面去,因为它是要从hdfs上读的

执行MapReduce到HBase的fruit表中

如果是csv文件就改为importcsv

下面这个是指定哪个字段为什么列名

-Dimporttsv.columns=HBASE_ROW_KEY,info:name,info:color

/opt/modules/hadoop-2.5.0-cdh5.3.6/bin/yarn jar lib/hbase-server-0.98.6-cdh5.3.6.jar importtsv -Dimporttsv.columns=HBASE_ROW_KEY,info:name,info:color fruit hdfs://hadoop-senior01.buba.com:8020/input/fruit       

下面这图是它的一个执行流程,当大批量数据转换的时候造成的压力会很大,从tsv文件转换为HFile的这个过程很慢,HFile跟HBase表的映射快.

优化方案:BulkLoad加载文件到HBase表

原理

BulkLoad会将tsv/csv格式的文件编程hfile文件,然后再进行数据的导入,这样可以避免大量数据导入时造成的集群写入压力过大。

作用

* 减小HBase集群插入数据的压力

* 提高了Job运行的速度,降低了Job执行时间

操作过程

把tsv文件转换为HFile文件

-Dimporttsv.bulk.output   输出文件指定路径

/opt/modules/hadoop-2.5.0-cdh5.3.6/bin/yarn jar /opt/modules/hbase-0.98.6-cdh5.3.6/lib/hbase-server-0.98.6-cdh5.3.6.jar importtsv -Dimporttsv.bulk.output=/output/furit -Dimporttsv.columns=HBASE_ROW_KEY,info:name,info:color fruit hdfs://hadoop-senior01.buba.com:8020/input/fruit/

把HFile导入到HBase表fruit_bulkload

执行下面这个mapreduce的时候明显感觉到速度提升很大,以后推荐使用这种方式,转换弄几台服务器干转换的工作.

/opt/modules/hadoop-2.5.0-cdh5.3.6/bin/yarn jar /opt/modules/hbase-0.98.6-cdh5.3.6/lib/hbase-server-0.98.6-cdh5.3.6.jar completebulkload /output/furit fruit_bulkload

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要用命令CSV 文件导入HBase,需要先将 CSV 文件上传到 HDFS。然后,可以使用 HBase 的 ImportTsv 工具将 CSV 文件导入HBase 表中。 下面是一个示例命令: ``` hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.separator=',' -Dimporttsv.columns=HBASE_ROW_KEY,col1,col2 <hbase_table_name> <hdfs_input_path> ``` 其中,`-Dimporttsv.separator=','` 指定了 CSV 文件的分隔符,`-Dimporttsv.columns=HBASE_ROW_KEY,col1,col2` 指定了 CSV 文件中的列名,`<hbase_table_name>` 是目标 HBase 表的名称,`<hdfs_input_path>` 是 CSV 文件在 HDFS 中的路径。 请注意,这只是一个示例命令,具体用法可能会有所不同。建议参考 HBase 的官方文档来了解 ImportTsv 工具的用法。 ### 回答2: 要将CSV文件导入HBase,需要执行以下步骤: 1. 准备CSV文件:确保你已经有一个包含要导入的数据的CSV文件。确保文件格式正确,数据按行和列排列,以逗号分隔。 2. 启动HBase:打开HBase的终端,并启动HBase集群。 3. 创建HBase表:使用HBase Shell命令创建要导入数据的表。例如,如果你的表名是my_table,你可以使用以下命令创建表: ``` create 'my_table', 'cf' ``` 4. 使用HDFS命令导入CSV文件到Hadoop分布式文件系统(HDFS)中。 ``` hdfs dfs -put /path/to/csv/file.csv /user/hadoop/csv/file.csv ``` 5. 进入HBase Shell:在终端中打开HBase Shell。 6. 使用ImportTsv命令导入CSV文件到HBase表中。你需要指定表名、HDFS上CSV文件的路径和HBase表的列族。 ``` importtsv -Dimporttsv.separator=',' -Dimporttsv.columns=HBASE_ROW_KEY,cf:data -Ccf /user/hadoop/csv/file.csv my_table ``` 7. 等待导入完成:导入过程可能需要一些时间,具体取决于CSV文件的大小和集群的性能。一旦导入完成,你就可以在HBase中查看导入的数据。 通过这些步骤,你就可以使用命令CSV文件导入HBase表中了。请确保在执行命令之前,你已经正确设置和配置了HBase和Hadoop环境。 ### 回答3: 要使用命令CSV文件导入HBase中,可以使用HBase自带的工具hbase-import命令来完成。 首先,需要确保已经安装好了HBase和Hadoop,并配置好了环境变量。然后,在终端或命令提示符中进入HBase的安装目录。 接着,使用以下命令CSV文件导入HBasehbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.separator=, -Dimporttsv.columns=HBASE_COLUMN_MAPPING TABLE_NAME INPUT_FILE 在上述命令中,需要替换以下参数: - HBASE_COLUMN_MAPPING:HBase列和CSV文件列的映射关系,以逗号分隔。例如,如果CSV文件的第一列需要映射到HBase表的first_name列,第二列映射到last_name列,则可以设置为:c1,c2 - TABLE_NAME:要导入HBase表的名称 - INPUT_FILE:要导入CSV文件的路径 例如,假设我们有一个名为csv_data的HBase表,其中的列分别为first_name和last_name。我们将要导入CSV文件为data.csv,存放在/home/user/目录下。那么命令的示例如下: hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.separator=, -Dimporttsv.columns=first_name,last_name csv_data /home/user/data.csv 执行上述命令后,HBase使用Hadoop的MapReduce框架将CSV文件中的数据导入到指定的HBase表中。 需要注意的是,导入CSV文件必须符合HBase表的列结构,且CSV文件的列数必须与HBase表的列数一致。如果不一致,导入过程可能会失败。另外,还可以通过其他选项和参数来设置导入的行数、导入的列范围等。详细的命令参数可以通过运行hbase org.apache.hadoop.hbase.mapreduce.ImportTsv --help来查看。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值