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. CefApp和CefClient的作用

    CefApp 在cefsimple中,提到了一个cefapp的类型,这个类型是一个接口类,主要目的是提供获取三种handler的接口 /// // Implement this interface t ...

  2. Homebrew安装和Mac使用

    软件安装 1.Homebrew安装   ruby环境: curl -sSL https://get.rvm.io | bash -s stable   官网方式: /usr/bin/ruby -e & ...

  3. 有趣、实用的c# 游戏源码下载网站

    在游戏开发的学习或工作中,利用完好的游戏源码可以事半功倍,不仅可以逆向学习开拓思维,也可以大大减少设计周期. 那想用c#来编写游戏的话,游戏源码在哪里找呢?下面整理了几个性价比高一些的网站,推荐给大家 ...

  4. 使用js为表格添加一行

    今天同事问了我一个问题,为表格添加新的行,我用的js写了一下,代码如下: <!DOCTYPE html> <html> <head> <meta charse ...

  5. 使用docker容器时遇到的2个问题

    最近项目在centOS7服务器上用docker部署了几个服务,在运行的时候发现,总是过一段时间,容器内的根目录就变为只读而无法写入了. 经过调查都是因为docker/devicemapper/devi ...

  6. PHP+Mysql防止SQL注入的方法

    这篇文章介绍的内容是关于PHP+Mysql防止SQL注入的方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 方法一: mysql_real_escape_string -- 转义 S ...

  7. List 线性表:ArrayLis,LinkedList

    package seday11.list; import java.util.ArrayList;import java.util.List; /*** @author xingsir * java. ...

  8. Node.js Learning Notes

    简介 简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. Node.js是一个事件驱动I/O服务 ...

  9. 操作Document文档

    利用客户端操作Document文档数据 1.创建一个文档(创建数据的过程,向表中去添加数据) 请求方式:Post 请求地址:es所在IP:9200/索引库/Type/文档ID(可给可不给,代表唯一标识 ...

  10. 【Struts APP_PATH】StartSystemListener

    StartSystemListener package k.filter; import javax.servlet.ServletContext; import javax.servlet.Serv ...