1. hadoop、hive、MySQL安装(略)启动hadoop
执行start-all.sh start-dfs.sh start-yarn.sh
2. 下载sqoop
#wget http://www.apache.org/dyn/closer.lua/sqoop/1.4.6
3. 解压
#tar -zxvfsqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
4. 建立软连接
#ln -s sqoop-1.4.6.bin__hadoop-2.0.4-alpha sqoop
5. 加执行文件路径
#export PATH=$PATH:/home/grid/sqoop/bin
6. 把MySQL Java链接器的jar文件拷贝到sqoop的lib目录下
连接器mysql-connector-java-5.1.35-bin.jar的下载地址:http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.35.tar.gz将其解压后找到mysql-connector-java-5.1.35-bin.jar
(注意:连接器的版本最低为5.1.35)
#cpmysql-connector-java-5.1.3-bin.jar /etc/yum.repos.d/sqoop/lib/(sqoop的所在的目录)
7. 测试
(1) 列出mysql数据库中的所有数据库
#sqooplist-databases --connect jdbc:mysql://192.168.56.104:3306?useSSL=false--username root --password 123456 (其中192.168.56.104位主机ip,root为MySQL数据库用户名、123456位密码(我的MySQL数据库名与密码为hive,hive其他的会出现权限问题))
(2) 连接MySQL并列出数据库中的表
#sqoop list-tables --connect jdbc:mysql://192.168.56.104:3306/test?useSSL=false--username root --password 123456(test为数据库名)
(3) 将MySQL的test.t1(数据库test中的t1表)表结构复制到Hive的test库中,表名为mysql_t1
#sqoop create-hive-table --connectjdbc:mysql://192.168.56.104:3306/test?useSSL=false --table t1 --username root--password 123456 --hive-table test.mysql_t1 (test.mysql_t1为Hive数据库中test数据库中的mysql_t1表)
注:该命令可以多次执行不报错
(4) 将MySQL表的数据导入到hive中
追加数据
#sqoop import --connect jdbc:mysql://192.168.56.104:3306/test?useSSL=false--username root --password 123456 --table t1 --hive-import --hive-tabletest.mysql_t1
(5) 将Hive表的数据导入到MySQL中
#sqoop export --connectjdbc:mysql://192.168.56.104:3306/test?useSSL=false --username root --password123456 --table t2 --export-dir /user/hive/warehouse/test.db/mysql_t1 (注意主键中数据不可以重复)
注意:若出现Output directory hdfs://SparkMaster:9000/user/root/uk already exists的错误时,
解决方案:先把HDFS中的输出目录干掉
#hadoopfs -ls -R (可查看目录)
#hadoopfs -rmr output (删除多余的输出文件例如错误提示中所提到已经存在的文件)
MapReduce执行是不允许输出目录存在的,自动创建!
参考:http://blog.csdn.net/wzy0623/article/details/50921702
https://www.cnblogs.com/wrencai/p/3908533.html