sqoop 是什么?

sqoop 主要用于异构数据:

1. 将数据从hadoop,hive 导入、导出到关系型数据库mysql 等;

2. 将关系型数据库 mysql 中数据导入、导出到 hadoop 、hve 。

sqoop 版本说明

sqoop 1 版本主要从1.4.0 到 1.4.7;sqoop 2 版本主要从1.99.1 到1.99.7。

sqoop1 和 sqoop2 的主要区别

    sqoop2 对 sqoop 1 主要在性能、安全方面做了优化升级,并新增了服务端,sqoop2 可以通过编程 rest api 的方式进行数据同步,不过目前 sqoop 2 没有实现将 mysql 数据直接导入到 hive,可以用 sqoop 1 版本通过 shell 客户端脚本方式实现 mysql 同步 hive 功能。

sqoop 基本原理

    sqoop 1 主要通过 hadoop 的分布式计算 mapreduce 任务进行数据的同步。

    

                                             (sqoop1 架构)

 

                                            (sqoop 2 架构)

 

sqoop 命令

   将 mysql 中数据导入到 hive 为例,包括全量、增量导入:

   

$ sqoop import

--connect jdbc:mysql://ip:3306/db     数据库连接串

--username root   用户名

--password root     密码

--split-by  id  执行并行分批字段,一般主健,配合 -m 使用 

-m 2    mapper 数

--fields-terminated-by "\t"    导出字段分隔符,此次为制表符为分隔符

--lines-terminated-by "\n"  换行符

--hive-import

--create-hive-table   创建 hive 表,如果目标表已经存在了,那么创建任务会失败

--hive-table pas_med_info    hive 表名

--null-string '\\N'   将mysql 中的NULL数据转换为hive 的 NULL

--target-dir /apps/hive/warehouse/db/dt='日期'    hive 在 hdfs 存储路径,dt='日期' 可以分区导入,当写成脚本时可以将日期做为变量,每天定时同步导入。

-- query where [可选]  增量导入方式一 ,推荐使用,直接可以用shell 脚本定时跑数据,方便简单

--incremental  append或lastmodify  [可选]  增量导入方式二,操作一

--append   [可选] 如果选择lastmodify 则需要添加此命令,配合操作一使用

–check-column createtime [可选] 用于检查增量数据的列 ,必须是 timestamp 列,配合操作一使用

Sqoop2 代码示例

以 java 语言,将 mysql 中数据导入到 hdfs 为例:

 

1. 添加依赖

<dependency>
<groupId>org.apache.sqoop</groupId>
<artifactId>sqoop-client</artifactId>
<version>1.99.7</version>
</dependency>

2. 创建 sqoop 客户端

String url = "http://ip:12000/sqoop/";
SqoopClient client = new SqoopClient(url);
client.setServerUrl(url);

3. 创建 mysql link

4. 创建 hdfs link

5. 创建 job 并提交同步数据任务

限于篇幅,就不大量贴代码了,请关注公众号,私信我,我会将完整实例发你。

请关注公众号:媛道

Sqoop 一点通的更多相关文章

  1. python编码问题一点通

    一.了解字符编码的知识储备 1. 文本编辑器存取文件的原理(nodepad++,pycharm,word) 打开编辑器就打开了启动了一个进程,是在内存中的,所以在编辑器编写的内容也都是存放与内存中的, ...

  2. php中的抽象方法和抽象类,简单明了,一点通

    1.什么是抽象方法?    我们在类里面定义的没有方法提的方法就是抽象方法.所谓的没有方法体指的是,在声明的时候没有大括号以及其中的内容,而是直接在声明时在方法名后加上分号结束,另外在声明抽象方法时方 ...

  3. 鹅厂优文 | ReactJS一点通

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由鹅厂新鲜事儿发表于云+社区专栏 作者:卢文喆 腾讯云 UI工程师 导语 | 当React 刚开始红的时候,一直觉得 JSX 的设计思想 ...

  4. note——《Tableau商业分析一点通》

    为了更好地发掘各领域的数据价值,且能对数据进行精确分析及可视化,掌握资料的脉动,做出正确的决策 人们需要一种工具:能够快速灵活地连接和整合数据,提供简单的方式实现从不同的角度去观察研究数据,计算和展示 ...

  5. ZBrush 2018软件安装激活教程一点通

    Zbrush下载地址:https://pixologic.com/CD 安装教程:(此CD代码仅有效一次,一旦此代码被使用,您将收到一封包含你账户信息的电子邮件.请把那封电子邮件保存在你的记录里.) ...

  6. Java8新特性一点通 | 回顾功能接口Functional Interface

    Functional Interface Functional Interface是什么? 功能接口是java 8中的新增功能,它们只允许一个抽象方法.这些接口也称为单抽象方法接口(SAM接口).这些 ...

  7. Java8新特性一点通 | 回顾文件操作和watchService文件变更监视操作

    文件操作 WatchService 文件操作 今天重温了一些文件操作: - Files.list() 遍历文件和目录 //List all files and sub-directories usin ...

  8. Java8新特性一点通 | 回顾字符转日期&JoinArray使用

    StringToDate日期转换 Join Array使用 StringToDate日期转换 Convert string to date in ISO8601 format 利用LocalDate. ...

  9. 心有 netty 一点通!

    一.标准的netty线程模型 双池合璧: 1.连接线程池: 连接线程池专门负责监听客户端连接请求,并完成连接的建立(包括诸如握手.安全认证等过程). 连接的建立本身是一个极其复杂.损耗性能的过程,此处 ...

随机推荐

  1. summernote 上传图片到图片服务器的解决方案(springboot 成功)

    遇到的可以连接成功但是拒绝登录的问题 前提说一下,我自己在自己的服务器上配置了nginx的反向代理,所以请求的时候才会直接写的是我的ip地址,要配置nginx的话,可以看我的nginx的笔记 当代码感 ...

  2. JVM探秘:VisualVM监控远程Java进程

    VisualVM在Java 8中是JDK自带的一个图形化工具,项目主页 VisualVM,在后续版本中可能会从JDK移除. VisualVM可以监控Java进程的CPU与内存占用情况,可以监控Java ...

  3. 编译和链接(lib和dll区别)(转载)

    1.头文件并不参加链接和编译.编译器第一步要做的就是简单的把头文件在包含它的源文件中展开.不知你是否能理解这句话.也就是头文件里面有什么内容,通通把它移到包含这个头文件的源文件里.(我觉得这是个很重要 ...

  4. Bugku-CTF之前女友(SKCTF)

    Day35    前女友(SKCTF) http://123.206.31.85:49162/ flag格式:SKCTF{xxxxxxxxxxxxxxxxxx}  

  5. 1.3 使用jmeter进行http接口测试

    来源: http://www.cnblogs.com/alisapan/p/6150309.html 此篇纯是搬运记载..   一.测试需求描述 1. 本次测试的接口为http服务端接口 2. 接口的 ...

  6. Mysq的安装

    1.安装包下载 2.安装教程 (1)配置环境变量 (2)生成data文件 (3)安装MySQL (4)启动服务 (5)登录MySQL (6)查询用户密码 (7)设置修改用户密码 (8)退出 1.安装包 ...

  7. 关于mybatis中sql映射文件模糊查询的使用

    1.从前台传递一个String类型的参数到后台进行查询,如果牵涉到模糊查询会报错,应该把参数封装到对象中再进行传递然后进行模糊查询 2.一个查询框,多个查询条件 <if test="c ...

  8. P&R 5

    Floorplan: 要做好floorplan需要掌握哪些知识跟技能? 通常,遇到floorplan问题,大致的debug步骤跟方法有哪些? 如何衡量floorplan的QA? 芯片的整体架构模块划分 ...

  9. h5页面调用相机功能

    //accept:表示要打开的文件类型 capture:表示可以捕获到系统默认的设备 <input type="file" accept="image/*" ...

  10. Python学习之函数篇

    python查看对象,函数帮助文档:.__doc__,例:str.split.__doc__ 查看详细对象,函数文档:help(),例:help(str.split) 函数参数可设置默认值 如果不能提 ...