我是靠谱客的博主 甜甜御姐,最近开发中收集的这篇文章主要介绍Sqoop初级学习,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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初级学习所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(76)

评论列表共有 0 条评论

立即
投稿
返回
顶部