您的位置:首页 > 数据库 > SQL

利用sqoop将hive和MySQL数据互导入

2017-12-27 09:55 746 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: