Sqoop

来源:互联网 发布:百度软件管家电脑版 编辑:程序博客网 时间:2024/06/05 20:58
Sqoop

官方参考文档:

http://sqoop.apache.org/docs/1.4.6/index.html

 

Sqoop介绍

Sqoop is a tool designed to transfer data between Hadoop and relational databases or mainframes. You can use Sqoop to import data from a relational database management system (RDBMS) such as MySQL or Oracle or a mainframe into the Hadoop Distributed File System (HDFS), transform the data in Hadoop MapReduce, and then export the data back into an RDBMS.

 

Sqoop 是数据转换的工具,在hadoop和关系型数据库之间进行传递:

import: 将关系型数据库的数据导入到hdfs中,可以为hdfs,hive,hbase;

export: 将hdfs(hdfs,hive)中的数据导入到关系型数据库当中;

 

帮助:

1 $sqoop help2 $sqoop help import3 $sqoop help export

 

import例子:

将数据从mysql中,导入到hdfs中,通过选项文件来执行操作;

1 sqoop --options-file options1.txt

options1.txt文件内容:

复制代码
 1 #导入 从数据库到hdfs 2 import 3  4 #数据库连接 5 --connect 6 jdbc:mysql://node1:3306/test 7  8 #数据库用户名密码 9 --username10 root11 --password12 root13 14 #字段15 --columns16 id,name,age17 --where18 1=119 20 #表名21 --table22 t_persion23 24 #num of map task, 只执行一次,且导入按顺序,需要设置值为125 --num-mappers26 127 28 #hdfs中如果存在,则删除再导入29 --delete-target-dir30 31 #目标目录32 --target-dir33 /sqoop/test134 35 #sting类型字段,值为null, 则修改为36 --null-string37 ''38 39 #非string类型字段,值为null,则修改为40 --null-non-string41 ''
复制代码

 

export例子:

从hive中导出数据到mysql中;

  1. 首先mysql中的表结构必须存在;
  2. 默认的hdfs中文件的字段分隔符是”,”;

常用的选项说明:

--update-key    更新的条件

--update-mode  updateonly(默认)  allowinsert

--input-fields-terminated-by "\\01"  hive表存储的文件,默认的字段分隔符;

通过选项文件来执行:

 1 sqoop --options-file options4.txt --input-fields-terminated-by "\\01" 

options4.txt的文件内容:

复制代码
 1 export 2 #连接数据库 3 --connect  4 jdbc:mysql://node1:3306/test  5 --username  6 root  7 --password  8 root  9 10 #数据库表11 --table 12 t_persion 13 14 #hive文件位置15 --export-dir 16 /user/hive/warehouse/t_persion17 18 #允许插入19 --update-mode 20 allowinsert 21 22 #更新字段的条件23 --update-key 24 id,name
原创粉丝点击