Sqoop 一点通
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 一点通的更多相关文章
- python编码问题一点通
一.了解字符编码的知识储备 1. 文本编辑器存取文件的原理(nodepad++,pycharm,word) 打开编辑器就打开了启动了一个进程,是在内存中的,所以在编辑器编写的内容也都是存放与内存中的, ...
- php中的抽象方法和抽象类,简单明了,一点通
1.什么是抽象方法? 我们在类里面定义的没有方法提的方法就是抽象方法.所谓的没有方法体指的是,在声明的时候没有大括号以及其中的内容,而是直接在声明时在方法名后加上分号结束,另外在声明抽象方法时方 ...
- 鹅厂优文 | ReactJS一点通
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由鹅厂新鲜事儿发表于云+社区专栏 作者:卢文喆 腾讯云 UI工程师 导语 | 当React 刚开始红的时候,一直觉得 JSX 的设计思想 ...
- note——《Tableau商业分析一点通》
为了更好地发掘各领域的数据价值,且能对数据进行精确分析及可视化,掌握资料的脉动,做出正确的决策 人们需要一种工具:能够快速灵活地连接和整合数据,提供简单的方式实现从不同的角度去观察研究数据,计算和展示 ...
- ZBrush 2018软件安装激活教程一点通
Zbrush下载地址:https://pixologic.com/CD 安装教程:(此CD代码仅有效一次,一旦此代码被使用,您将收到一封包含你账户信息的电子邮件.请把那封电子邮件保存在你的记录里.) ...
- Java8新特性一点通 | 回顾功能接口Functional Interface
Functional Interface Functional Interface是什么? 功能接口是java 8中的新增功能,它们只允许一个抽象方法.这些接口也称为单抽象方法接口(SAM接口).这些 ...
- Java8新特性一点通 | 回顾文件操作和watchService文件变更监视操作
文件操作 WatchService 文件操作 今天重温了一些文件操作: - Files.list() 遍历文件和目录 //List all files and sub-directories usin ...
- Java8新特性一点通 | 回顾字符转日期&JoinArray使用
StringToDate日期转换 Join Array使用 StringToDate日期转换 Convert string to date in ISO8601 format 利用LocalDate. ...
- 心有 netty 一点通!
一.标准的netty线程模型 双池合璧: 1.连接线程池: 连接线程池专门负责监听客户端连接请求,并完成连接的建立(包括诸如握手.安全认证等过程). 连接的建立本身是一个极其复杂.损耗性能的过程,此处 ...
随机推荐
- curl模板----php发送post,get请求
function _grab($curl,$ip='',$referer='',$postInfo='',$cookie=''){ $ch = curl_init(); curl_setopt($ch ...
- Anaconda的安装及tensorflow和各个库的安装
首先,在anaconda官网https://www.anaconda.com/download/下载想要的版本,2.7或者3+,建议用3.0以上的版本,因为相对来说,功能更加的多样. 下载完成后将安装 ...
- Html学习笔记(二)
Html头部 HTML <link>元素 <link> 标签定义了文档与外部资源之间的关系. <link> 标签通常用于链接到样式表: <head> & ...
- Yii2 框架下 session跨域共享互通
在项目实施过程中,往往把一个大项目进行分拆成几个独立的项目,项目用完全独立的域名和文件,可以放到不同的服务器上的独立分项目. 几个子项目共用一个登录点. 原理简单来说就是服务端session 共享, ...
- AcWing 853. 有边数限制的最短路 bellman-ford 结构体
//存在负权值 处理负环 //如果能求出来 一般是不存在负权回路 //如果有负回路 那最小距离可能是负无穷 #include <cstring> #include <iostream ...
- nfs 动态文件挂载读写权限设置
nfs 动态文件挂载读写权限设置 待办 ll 命令查看文件夹权限 参考设置共享文件夹https://www.linuxidc.com/Linux/2018-11/155331.htm
- 消息队列(六)--- RocketMQ-消息消费
文章部分图片来自参考资料,侵删 概述 我们从前面的发送流程知道某个主题的消息到了broker 的 messageque 里,假如让我们来设计一个消息队列的消费者过程,那么多个消费者应该如何消费数量较少 ...
- 转载:initcall
转自:http://blog.chinaunix.net/uid-29570002-id-4387097.html Linux系统启动过程很复杂,因为它既需要支持模块静态加载机制也要支持动态加载机制. ...
- 【Python实现图片验证码】
"```python import base64 import random from PIL import Image from PIL import ImageDraw # 画笔对象 f ...
- 安卓基础(Navigation)
今天学习了简单的Navigation:页面导航. 页面导航的简单例子: MainAcitivity: package com.example.navigation; import android.su ...