网站流量日志分析--数据导出--定时增量数据导出详解 | 学习笔记

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 快速学习网站流量日志分析--数据导出--定时增量数据导出详解

开发者学堂课程【大数据分析之企业级网站流量运营分析系统开发实战(第五阶段):网站流量日志分析--数据导出--定时增量数据导出详解】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址: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* * *意为凌晨两点二十

image.png


二、演示操作

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,这样就会自动上传当天数据。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
19小时前
|
Linux Shell
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
248 1
|
19小时前
|
安全 Linux 调度
【后台开发】TinyWebser学习笔记(4)定时器、日志系统(单例模式)、封装互斥锁信号量
【后台开发】TinyWebser学习笔记(4)定时器、日志系统(单例模式)、封装互斥锁信号量
10 1
|
19小时前
|
C++ 索引
【Qt 学习笔记】如何在Qt中打印日志 | qDebug的使用 | Assistant的使用
【Qt 学习笔记】如何在Qt中打印日志 | qDebug的使用 | Assistant的使用
26 0
|
19小时前
|
小程序 Linux 数据安全/隐私保护
Linux学习笔记十六:日志管理
Linux学习笔记十六:日志管理
|
19小时前
|
监控 安全 前端开发
Nginx 访问日志中有 Get 别的网站的请求是什么原因?
Nginx 访问日志中有 Get 别的网站的请求是什么原因?
43 0
|
6月前
|
canal 负载均衡 关系型数据库
Flink CDC如何获得增量binlog,可能是跟canal一样,伪装成从节点获取日志?
Flink CDC如何获得增量binlog,可能是跟canal一样,伪装成从节点获取日志?
101 1
|
6月前
|
Unix Linux Shell
Linux 下使用crontab 定时打包日志并删除已被打包的日志
f=`ls /home/hls/apache-tomcat-7.0.61/logs -1 -c` #获取logs下文件列表( /home/hls/apache-tomcat-7.0.61/logs 是日志的所在的路径)
42 0
|
6月前
|
Unix Linux Shell
Linux 下使用crontab 定时打包日志并删除已被打包的日志
crontab是和用户相关的,每个用户有自己对应的crontab 。 cron是Linux下的定时执行工具,以下是重启/关闭等等的命令
54 0
|
6月前
|
Java
JVM学习笔记-如何在IDEA打印JVM的GC日志信息
若要在Idea上打印JVM相应GC日志,其实只需在Run/Debug Configurations上进行设置即可。
69 0
|
7月前
|
Shell Linux
Linux使用Shell脚本定时清理日志
Linux使用Shell脚本定时清理日志
115 1

热门文章

最新文章