概述
Sqoop:数据传输
常用功能:数据导入(关系型数据库导入hdfs),数据导出(hdfs导出到关系型数据库),Sqoop作业
辅助性工具:Sqoop代码生成器,Sqoop Eval工具,列出数据库,列出数据表,Sqoop帮助
核心技术:
生成MapReduce
作业创建
数据映射
并行控制
hdfs查看数据
hdfs dfs -cat /user/root/movies/*
导入命令:
命令语法:sqoop import (控制参数)(导入参数)
命令元素:导入操作,数据源,访问方式,导入控制,目标地址
命令理解:数据从哪里来,有什么控制,到哪里去
eg: sqoop import --connect jdbc:mysql://47.95.11.134:3306/doubanmove --username tiger --password tiger --table movies --m 1
columns的使用方法
意图:指定需要导入的列
用法:在导入命令后,任意位置加上 --columns <列名>
where条件的使用
意图:类似SQL语句的where
用法:在导入命令后,任意位置加上 --where <条件>
自由SQL导入:
意图:可以让用户随意些SQL进行数据导入
用法:在导入命令后,任意位置加上 --query <SQL>
eg: sqoop import -connect jdbc:mysql://47.95.11.134:3306/doubanmove --username tiger --password tiger --table movies --columns 'id,name' --where "id > 200" -m 1;
sqoop import -connect jdbc:mysql://47.95.11.134:3306/doubanmove --username tiger --password tiger --table movies -- m 1 --query "select id,name from movies where id > 200 and $CONDITIONS'
增量导入:
意图:持续将源数据导入到目标存储位置,但每次只会将源数据中新增内容导入到目标地址存储上
核心参数: -check-column -last-value -incremental(模式append,lastmodified)
append:
意图:对数据进行附加,不支持更新数据
应用场景:数据只累加不修改,比如日志数据收集
需要一个自增的id作为检查列,他每次会去查找值大于lastvalue的数据
eg:sqoop import --connect jdbc:mysql://47.95.11.134:3306/doubanmove --username tiger --password tiger --table movies --m 1 --check-column id --incremental append --last-value 264
lastmodified:
意图:在源表中数据更新的时候使用。
允许数据更新,同步数据到hdfs中会存在数据与多个时间的分割版本
应用:对于变动数据收集,记录变动须记录时间
eg:sqoop import --connect jdbc:mysql://47.95.11.134:3306/doubanmove --username tiger --password tiger --check-columns last_mod --incremental lastmodified --last-value "2018-02-24 21:35:02" --m 1 --append
数据导出(用的不多):
sqoop export <generic-args><export-args>
insert模式:
意图:对数据进行附加导出,不支持更新数据
原理:将数据转换为Insert语句,执行插入操作
Update模式:
意图:在源表中数据更新的时候使用
原理:将数据转换为Update语句,执行更新操作
Sqoop作业创建
Sqoop job语法
意图:保存任务导入导出的执行参数,确保任务可以被重复执行,并且被调度程序可以定时调度
语法:sqoop job <通用控制参数><作业控制参数>
密码存放:隐藏文件进行存放,起到保护作用
echo -n "tiger" > /root/apps/sqoop/.mysql.password
vi .mysql.password
tiger
退出
eg:sqoop job --create myjob -- import --connect jdbc:mysql://47.95.11.134:3306/doubanmove --username tiger --password-file file:///root/apps/sqoop/.mysql.password --table movies -m 1 --incremental append --check-column id --last-value 1 --verbose
查看:sqoop job --show myjob
执行命令:sqoop job --exec myjob
Sqoop定时作业创建
意图:设定规定时间执行sqoop操作
实现方式:
1 使用Oozie任务流,定时调度Sqoop任务
2 编写定时程序,定时程序定时调度Sqoop任务
3 使用Centos(linux)自带的调度器Crontab实现sqoop任务定时调度
Centos:
//创建一个sh文件并打开
vi sqoop_incremental.sh
//编写如下命令:
#!/bin/bash
/root/apps/sqoop/bin/sqoop job --exec myjob > myjob.out 2>&1 &
//编写linux定时调度器
crontab -e
//编写如下指令:每隔一分钟定时执行目录下的文件
*/1 * * * * sh /root/apps/sqoop/sqoop_incremental.sh
最后
以上就是甜甜御姐为你收集整理的Sqoop初级学习的全部内容,希望文章能够帮你解决Sqoop初级学习所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复