使用Sqoop实现HDFS与Mysql互转

使用Sqoop实现HDFS与Mysql互转


简介
Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导入到Hadoop的HDFS中,也可以将HDFS的数据导入到关系型数据库中。

http://sqoop.apache.org/

环境
当调试过程出现IncompatibleClassChangeError一般都是版本兼容问题。

为了保证hadoop和sqoop版本的兼容性,使用Cloudera,

Cloudera简介:

Cloudera为了让Hadoop的配置标准化,可以帮助企业安装,配置,运行hadoop以达到大规模企业数据的处理和分析。

http://www.cloudera.com/content/cloudera-content/cloudera-docs/CDHTarballs/3.25.2013/CDH4-Downloadable-Tarballs/CDH4-Downloadable-Tarballs.html

下载安装hadoop-0.20.2-cdh3u6,sqoop-1.3.0-cdh3u6。

安装
安装比较简单,直接解压即可

唯一需要做的就是将mysql的jdbc适配包mysql-connector-java-5.0.7-bin.jar copy到$SQOOP_HOME/lib下。

配置好环境变量:/etc/profile

export SQOOP_HOME=/home/hadoop/sqoop-1.3.0-cdh3u6/

export PATH=$SQOOP_HOME/bin:$PATH

MYSQL转HDFS-示例
./sqoop import --connect jdbc:mysql://10.8.210.166:3306/recsys --username root --password root --table shop -m 1 --target-dir /user/recsys/input/shop/$today


HDFS转MYSQ-示例
./sqoop export --connect jdbc:mysql://10.8.210.166:3306/recsys --username root --password root --table shopassoc --fields-terminated-by ',' --export-dir /user/recsys/output/shop/$today

示例参数说明
(其他参数我未使用,故不作解释,未使用,就没有发言权,详见命令help)


参数类型

参数名

解释

公共

connect

Jdbc-url

公共

username

---

公共

password

---

公共

table

表名

Import

target-dir

制定输出hdfs目录,默认输出到/user/$loginName/

export

fields-terminated-by

Hdfs文件中的字段分割符,默认是“\t”

export

export-dir

hdfs文件的路径

你可能感兴趣的:(使用Sqoop实现HDFS与Mysql互转)