Sqoop 是一款用来在不同数据存储软件之间进行数据传输的开源软件,它支持多种类型的数据储存软件。
安装 Sqoop
1.下载sqoop并加mysql驱动包
http://mirror.bit.edu.cn/apache/sqoop/,下载,如下载sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz,
要从 MySQL 导数据需要安装 MySQL driver。如 mysql-connector-java-5.1.38.tar.gz,解压以后把 jar 包放到 Sqoop 目录下的 lib 目录下。
2.配置环境变量
要把HADOOP_MAPRED_HOME添加到系统环境,否则会报错/usr/software/sqoop/bin/../../hadoop/mapreduce does not exist!
需要 vi /etc/profiles加
SQOOP_HOME=/usr/software/hadoop
export HADOOP_MAPRED_HOME=/usr/software/hadoop
export SQOOP_HOME=/usr/software/hadoop
从 MySQL 到 HDFS
mysql测试表 bbb 为例
sqoop import --connect jdbc:mysql://<dburi>/<dbname> --username <username> --password <password> --table <tablename> --check-column <col> --incremental <mode> --last-value <value> --target-dir <hdfs-dir> --fields-terminated-by '\t' 例子: sqoop import --connect jdbc:mysql://localhost:3306/test --username root --password admin --table bbb --check-column id --incremental append --last-value '1' --target-dir output_hb --fields-terminated-by '\t'
参数说明:
参数说明: dburi:数据库的访问连接,例如: jdbc:mysql://192.168.1.124:3306/ 如果您的访问连接中含有参数,那么请用单引号将整个连接包裹住,例如’jdbc:mysql://192.168.1.124:3306/mydatabase?useUnicode=true’ dbname:数据库的名字,例如:user。 username:数据库登录用户名。 password:用户对应的密码。 tablename:MySQL 表的名字。 col:要检查的列的名称。 mode:该模式决定Sqoop如何定义哪些行为新的行。取值为append或lastmodified。 value:前一个导入中检查列的最大值。 hdfs-dir:HDFS 的写入目录,例如:/user/hive/result。 –check-column,用来指定一些列,这些列在导入时用来检查做决定数据是否要被作为增量数据,在一般关系型数据库中,都存在类似Last_Mod_Date的字段或主键。注意:这些被检查的列的类型不能是任意字符类型,例如Char,VARCHAR…(即字符类型不能作为增量标识字段) –incremental,用来指定增量导入的模式(Mode),append和lastmodified –last-value,指定上一次导入中检查列指定字段最大值 --fields-terminated-by 行分隔符 ,如 '\t' --lines-terminated-by 列分隔符,hive只支持'\n'作为行分隔符,默认也是'\n' 更加详细的参数使用请参考 Sqoop Import。