将MySQL中大量数据导入到Hbase有什么好的方法

发布网友 发布时间:2022-04-24 13:02

我来回答

2个回答

懂视网 时间:2022-05-01 19:06

实现过程中发现 不会写shell是个硬伤 最后只能分两步进行操作 1.sel_tabs.sh
/usr/bin/mysql -hIp地址 -u用户名 -p密码 -D数据库名<<EOF
use 
select table_name from information_schema.tables where table_schema=‘数据库名‘ and table_type=‘base table‘;
EOF

运行 bash sel_tabs.sh>tbsnam.dat

将结果写入tbsname.dat

2.readdat.sh

#!/bin/sh 
cat tbsnam.dat |while read LINE
do
	echo $LINE
	if [ "$LINE" = "table_name" ]; then
			echo "table_name test"		
	else
			echo $LINE
			str="/opt/dtma/sqoop/bin/sqoop import --connect jdbc:mysql://Ip地址:端口号/数据库名称 --username ‘用户名‘ --password ‘密码‘ --table AA --hbase-table AA --column-family f1 --hbase-row-key id --hbase-create-table --m 1 --incremental append --check-column ‘id‘ --last-value 0"
  		strend=${str//"AA"/$LINE}
			echo $strend 
  $strend
 fi
done

str是sqoop 增量导入单个表的 语句

上面sql语句查询结果 第一行出现 table_name,所以把table_name 剔除掉

最后运行

bash readdat.sh

 

mysql数据导入到hbase

标签:info   oop   name   font   schema   数据库   test   trend   type   

热心网友 时间:2022-05-01 16:14

将Mysql迁移到Hbase主要有三种方法:

1、Put API

Put API可能是将数据快速导入HBase表的最直接的方法。但是在导入【大量数据】时不建议使用!但是可以作为简单数据迁移的选择,直接写个代码批量处理,开发简单、方便、可控强。

2、MapRece Job

推荐使用sqoop,它的底层实现是maprece,数据并行导入的,这样无须自己开发代码,过滤条件通过query参数可以实现。

Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将MySQL中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到Mysql中。

参考Index of /docs。

采用如下命令:sqoop import

--connect jdbc:mysql://localhost/db

--username root -P

--table mysql_order

--columns "id,name"

--hbase-table hbase_order

--column-family f

--hbase-row-key id

--query "select id,name from mysql_order where..."

-m 1

3、采用Bulk load装载数据

bulk-load的作用是用maprece的方式将hdfs上的文件装载到hbase中,对于海量数据装载入hbase非常有用。

需要将MySQL的表数据导出为TSV格式(因为后面使用Import TSV工具),还需要确保有一个字段可以表示HBase表行的row key。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com