Sqoop(3)—— Mysql数据导入HDFS
Sqoop(3)—— Mysql数据导入HDFS
官方文档
Sqoop导入导出的官方文档:
http://sqoop.apache.org/docs/1.4.7/index.html
http://sqoop.apache.org/docs/1.4.7/SqoopUserGuide.html
执行Sqoop的两种方式
http://sqoop.apache.org/docs/1.4.7/SqoopUserGuide.html#_using_options_files_to_pass_arguments
公共参数(Common arguments)
--connect:JDBC连接字符串
--connectioni-manager:JDBC连接管理类
--driver:JDBC驱动类
--hadoop-mapred-home <dir>:如果系统环境变量中声明了HADOOP_HOME则可以不写这个参数
-P:在控制台输入密码
--password:JDBC连接关系型数据库的密码
--username:JDBC连接关系型数据库的用户名
导入控制参数
示例
将mysql数据库中的内容导入到hdfs
集群规划与版本
hadoop-2.6.5
sqoop-1.4.7.bin__hadoop-2.6.0
zookeeper-3.4.10
faith-Fedora |
faith-Ubuntu |
faith-openSUSE |
faith-Kylin |
faith-Mint |
faith-Fedora2 |
|
NN1(ZKFC1) |
✔ |
|||||
NN2(ZKFC2) |
✔ |
|||||
JN1 |
✔ |
|||||
JN2 |
✔ |
|||||
JN3 |
✔ |
|||||
DN1(NM1) |
✔ |
|||||
DN2(NM2) |
✔ |
|||||
DN3(NM3) |
✔ |
|||||
RS1 |
✔ |
|||||
RS2 |
✔ |
|||||
ZK1 |
✔ |
|||||
ZK2 |
✔ |
|||||
ZK3 |
✔ |
|||||
SQOOP |
✔ |
|||||
MYSQL |
✔ |
启动集群
启动ZK
启动HDFS
启动yarn
启动mysql
测试连接
使用list-databases工具展示mysql数据库列表。
创建mysql数据表
创建一个表psn,作为源表,并向该表中存入一些数据。
导入命令
import
--connect
jdbc:mysql://faith-Fedora2:3306/test
--username
root
--password
--as-textfile
--columns
id,name,msg
--table
psn
--delete-target-dir
--target-dir
/user/aith/sqoop/data
-m
4
将命令写入一个文本文件sqoop_options_file
执行命令
如果mysql上创建表的时候没有设置主键,会抛出下面的异常。
这个异常是因为关系型数据库中的表没有主键造成的
(参考文章http://blog.****.net/holdbelief/article/details/79638463)
解决方案有两种:
方案一:给表添上主键
方案二:有些数据表无法设置主键,比如很多的监测记录数据,找不到唯一值,针对这种数据,我们可以根据上面的错误提示通过以下两个方法来解决:
- 将map的个数设置成1(Sqoop默认是4)
- 使用一个字段(需要是整型字段)作为分片的字段,使用—split-by指定分片字段。
重新执行命令
在Yarn的webUI上查看任务
http://faith-Kylin:8088
在HDFS上查看
faith-Fedora:50070
查看HDFS上面的数据