Sqoop安装及MySql数据导入HBase
2013-12-04 15:23
405 查看
Sqoop介绍
Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如:MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。(本文档中使用的是sqoop-1.4.2-cdh4.2.1版本)
为什么要使用sqoop
因为业务的不断增长导致mysql数据库中数据太多,影响数据查询效率,所以使用sqoop把现有mysql中数据导入到HBase中,使用HBase支撑大数据量的查询。
Sqoop的安装
下载
wget http://archive.cloudera.com/cdh4/cdh/4/sqoop-1.4.2-cdh4.2.1.tar.gz
配置
sqoop-env.sh
cd ${sqoop_home}/conf复制创建sqoop-env.sh
cp sqoop-env-template.sh sqoop-env.sh
修改 sqoop-env.sh 加入下面三行,根据集群情况填写
HADOOP_COMMON_HOME=/home/cdh4-test/hadoop-2.0.0-cdh4.2.1
HADOOP_MAPRED_HOME=/home/cdh4-test/hadoop-2.0.0-mr1-cdh4.2.1
HBASE_HOME=/home/cdh4-test/hbase-0.94.2-cdh4.2.1
添加jar包
复制集群中hadoop的core包以及mysql-jdbc包到sqoop-lib目录下。
测试
进入sqoop-bin目录下执行命令./sqoop-list-tables --connect jdbc:mysql://you_mysql_address:port/you_db_name --username mysqlusername --P
然后提示输入密码,输入数据库登录密码即可。然后终端显示该数据库下的所有表名称。
Sqoop安装成功
使用sqoop把mysql中数据导入hbase中
命令:./sqoop-import --connect jdbc:mysql://xxx.xxx.xxx.xxx/service --table ddt_map_info_copy --hbase-create-table --hbase-table A --column-family info --split-by mapId --username root --P --compression-codec lzo -z
--table ddt_map_info_copy 表示导出gamewaveservice数据库的ddt_map_info_copy表。
--hbase-table A 表示在复制到表A中。
--column-family person 表示在表A中建立列族person。
--hbase-row-key mapId 表示表A的row-key是map_info_copy表的mapId字段。
--hbase-create-table 表示在HBase中建立表。
--username root 表示使用用户root连接Mysql。
-z 表示采用压缩方式
--compression-codec lzo 表示用lzo方式压缩 无效
遇到的问题及结局方案
Q1:需要根据业务逻辑对HBase的row-key做出调整。A1:有两种解决方案
1) 在数据导入之前对mysql原有表结构做出调整,增加一列存放即将作为Hbase row-key数据。
操作步骤:根据业务逻辑写出sql并update相应表的每一行。
2) 扩展PutTransformer类,自定义导入HBase的put格式。并在执行导入命令时指定该类
操作步骤:
上面代码做出示例,红色字体为修改行,蓝底字体为添加内容。
2、包并放进sqoop-lib目录下,执行命令
./sqoop-import -D sqoop.hbase.insert.put.transformer.class=com.gamewave.sqoop.extensions.tansformat_row_key.DdtMapInfoTransFormat –connect jdbc:mysql://xxx.xxx.xxx.xxx/service --table ddt_map_info_copy --hbase-create-table --hbase-table ddt_map_info_copy --column-family info --split-by mapId --username root --P --compression-codec lzo
命令中-D为指定属性名称 参数值为键值对
sqoop.hbase.insert.put.transformer.class属性值为指定格式化类名称
3、验证
进入hbase shell
可以查看得到rowkey后缀均为:custom,修改成功
相关文章推荐
- 大数据基础(二)hadoop, mave, hbase, hive, sqoop在ubuntu 14.04.04下的安装和sqoop与hdfs,hive,mysql导入导出
- Sqoop安装及MySql数据导入HBase
- Sqoop安装配置与从mysql中导入数据到hbase
- Sqoop安装配置与从mysql中导入数据到hbase
- 使用Sqoop从MySQL导入数据到Hive和HBase
- 利用Sqoop将MySQL海量测试数据导入HDFS和HBase
- sqoop:mysql和Hbase/Hive/Hdfs之间相互导入数据
- Sqoop将MySQL和Oracle的数据导入HIVE和Hbase
- 用Sqoop从从MySQL导入数据到Hive和HBase
- 使用sqoop从MySQL导入数据到HBase
- sqoop:mysql和Hbase/Hive/Hdfs之间相互导入数据
- Sqoop导入mysql数据到Hbase
- Sqoop_详细总结 使用Sqoop将HDFS/Hive/HBase与MySQL/Oracle中的数据相互导入、导出
- 使用Sqoop将HDFS/Hive/HBase与MySQL/Oracle中的数据相互导入、导出
- Sqoop1 安装及Hive/Hbase数据与Mysql数据互导(九)
- Sqoop导入mysql数据到Hbase
- mysql通过sqoop导入到hbase中时数据量为1000w时出现Incorrect key file for table '/tmp/#sql_458_0.MYI'; try to repair it
- Sqoop安装配置及将mysql数据导入到hdfs中
- 如何将mysql数据导入Hadoop之Sqoop安装
- Sqoop安装配置及将mysql数据导入到hdfs中