开发者学堂课程【大数据分析之企业级网站流量运营分析系统开发实战(第五阶段):网站流量日志分析--数据导出--增量数据导出详解】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/697/detail/12247
网站流量日志分析--数据导出--增量数据导出详解
增量导数据到 mysql
应用场景:
将 Hive 表中的增量记录同步到目标表中
使用技术:
使用 sqoopexport 中 -update-mode 的 allowinsert 模式进行增量数据导入目标表中。该模式用于将 Hive中有但目标表中无的记录同步到目标表中,但同时也会同步不一致的记录。
实现逻辑:
以 dw_webflow_basic_info 基础信息指标表为例进行增量导出操作。
1. Mysql 手动创建目标表
打开终端,使用 select 粘贴dw_webflow_basic_info,复制表格信息至 Notpad ;查看表格,其中有具体的月份、日期、pv、uv、ip 及分区等
使用 Navicat Premium,复制以下代码并右键进行执行
create table dw webflow basic info(
monthstr varchar(20),
daystr varchar(10),
pv bigint,
uv bigint
ip bigint,
vv bigint
)
2. 先执行全量导入,把当前的 hive 中 2018101 分区数据全部导出至 mysql 中
浏览器打开 Browse Directory,导出数据;在 SecureCRT 中可利用 desc formatted 直接导出 ;其中 Location 选项中显示出其具体路径;复制该路径并加上分区目录。
导出数据后刷新并检查所导出数据是否正确
bin/sqoopexport \
--connect jdbc:mysgl://node-1:3306/weblog\
--username root--password hadoop \
--table_dw_webflow_basic info\
--fields-terminated-by’\001’\
--export-dir/user/hive/warehouse/itheimadb/dwwebflowbasicinfo/datestr=20181101/
3. 为方便演示,手动生成往 hive 中添加 20181103 的数据
insert into table dw webflow basic info
partition(datestr=20181103" )
values{‘’201811’’,’’03’’14250,1341,1341,96}刷新后产生新一组数据,即产生增量数据。导出末尾为03的数据,且原数据01保持不动。
4. Sqoop 增量导出
运用参数进行控制
bin/sqoop export\
--connect jdbc:mysql://node-1:3306/weblog\
--username root\
--password hadoop\
--table dw_webflow_basic_info\
--fields-terminated-by’\001'\
--update-key monthstr,daystr\
--update-mode allowinsert\
--export-dir/user/hive/warehouse/itheima.db/dw_webflow_basic_info/datestr=20181103/
其中 --update-mode allowinsert\ 叫做增量更新模式;
--update-key monthstr,daystr\ 用于指定更新时间差的判断依据,可以多个字段,中间用逗号分隔;
如果检查的字段在 hive 中有更新,mysql 目标表中没有,那么 sqoop 就会执行更新操作。
导入成功后刷新进行检验,每天均会产生数据,则该数据会日日更新,即完成了增量操作。