开发者学堂课程【大数据分析之企业级网站流量运营分析系统开发实战(第五阶段):网站流量日志分析--数据导出--定时增量数据导出详解】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/697/detail/12248
网站流量日志分析--数据导出--定时增量数据导出详解
内容介绍:
一、定时增量导出数据到 mysql
二、演示操作
一、定时增量导出数据到 mysql
应用场景:
将 Hive 表中的增量记录自动定时同步到目标表中。
使用技术:
使用 sqoopexport 中 --update-mode 的 allowinsert 模式进行增量数据导入目标表中。该模式用于将 Hive 中有但目标表中无的记录同步到目标表中,但同时也会同步不一致的记录。"
实现逻辑:
以 dwwebflow basic info 基础信息指标表为例进行增量导出操作。
1. 为了方便演示,手动生成往 hive 中添加 20181104 的数据:
insertintotabledw_webflow_basic_infopartition(datestr="20181104”) values("201811","04”,10137,1129,1129,103);
若仍根据增量导出的代码进行运用,则会发现时间是写死的,需要进行动态传参。
2. 编写 linux shell 脚本执行 sqoop 导出
(1)导出数据的时间最好不要写死,可以通过传参或命令的方式自动获取时间。
(2)参数属性值不要写死,集中定义变量后续引用,方便集中管理。
#!/bin/bash
export SQOOP_HOME=/export/servers/sgoop
if[$# -eq1]
( $# 代表传入脚本的个数)
then
execute date=date--date="${1}"+8Y8md
(做出判断,以得出具体执行日期;``反引号,英文状态下tab键上方代表立刻执行)
else
execute date= date-d'-1day+Yim8d
fi
echo "execute date:"slexecute date
table name="dw webflow basic info"
hdfs
dir=/user/hive/warehouse/itheima.db/dwwebflow
basic
info/datestr=slexecute date
(表的名字)
mysq1 db pwd=hadoop
(存放的目录)
mysql db name=root
echo 'aqoop start
$SQOOP HOME/bin/sqoop export\
--connect"jdbc:mysql://node-1:3306/weblog"\
(需与服务器保持一致)
--username smysql db name\
--password mysql b pwd\
--table stable name
--fields-terminated-by'\001\
--update-keymonthstrdaystr\
(保证了定时增量导出)
--update-mode allowinsert\
(保证了定时增量导出)
--export-dir $hdfs di
echo 'sgoop end'
3. 配合 linux crontab 或者定时调度软件进行周期性调度执行
其中包括 linux crontab、开源 azkaban oozie 等。
* * * * * 分别为:
分、时、日、月、周;002* * *意为凌晨两点二十
二、演示操作
1. 复制以下代码进行运行:
#!/bin/bash/
if[$# -eq1]
( $# 代表传入脚本的个数)
Then
execute date=date--date="${1}"+8Y8md
(做出判断,以得出具体执行日期;``反引号,英文状态下tab键上方代表立刻执行)
else
execute date= date-d'-1day+Yim8d
fi
Echo$execute date
授予执行权限:
chmod u+x test.sh
;输入时间 20110911,则打印的数据即为 20110911 的数据。
即可以指定具体某一天的时间,也可以默认为是前一天的时间;通过对脚本的精确控制,可以取得想要的变量数据,使脚本变得更加灵活,也方便集中修改管理。
2. 复制 shell 脚本并上传,使用 cat sqoop_export.sh
命令进行验证,确保其为正常状态。
执行后并未出现相关的数据,返回查看发现出现 Input path does not exist
,即输入路径不存在,所以需要手动写死,把脚本手动上传。输入 20181104,这样就会自动上传当天数据。