准备数据集用于flink学习
欢迎访问我的GitHub
https://github.com/zq2599/blog_demos
内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;
在学习和开发flink的过程中,经常需要准备数据集用来验证我们的程序,阿里云天池公开数据集中有一份淘宝用户行为数据集,稍作处理后即可用于flink学习;
下载
下载地址:
https://tianchi.aliyun.com/dataset/dataDetail?spm=a2c4e.11153940.0.0.671a1345nJ9dRR&dataId=649如下图所示,点击红框中的图标下载(名为UserBehavior.csv.zip的文件太大无法在excel打开,因此下载体积小一些的UserBehavior.csv):

该CSV文件的内容,一共有五列,每列的含义如下表:
| 列名称 | 说明 |
|---|---|
| 用户ID | 整数类型,序列化后的用户ID |
| 商品ID | 整数类型,序列化后的商品ID |
| 商品类目ID | 整数类型,序列化后的商品所属类目ID |
| 行为类型 | 字符串,枚举类型,包括('pv', 'buy', 'cart', 'fav') |
| 时间戳 | 行为发生的时间戳 |
| 时间字符串 | 根据时间戳字段生成的时间字符串 |
- 下载完毕后用excel打开,如下图所示:

增加一个字段
为了便于检查数据,接下来在时间戳字段之后新增一个字段,内容是将该行的时间戳转成时间字符串
- 如下图,在F列的第一行位置输入表达式,将E1的时间戳转成字符串:

- 上图红框中的表达式内容如下:
=TEXT((E1+8*3600)/86400+70*365+19,"yyyy-mm-dd hh:mm:ss")
- !!!有个问题要格外注意!!!:上述表达式中,由于8*3600的作用,得到的时间字符串实际上是东八区时区的时间,在flink sql中,如果用DATE_FORMAT函数计算timestamp也能得到时间字符串,但是这个字符串是格林尼治时区,此时两个时间字符串的值就不同了,例如从F列看2017/11/12和2017/11/13各一条记录,但是DATE_FORMAT函数计算timestamp得到的却是2017/11/12有两条记录,解决这个问题的办法就是将表达式中的8*3600去掉,大家都用格林尼治时区;
- 表达式生效后,F1的内容就是E1的时间字符串,接下来F列的所有记录都作转换,鼠标放在下图红框位置时,会出现十字架标志,在此标志上双击鼠标:

5. 完成后如下图,F列的时间信息更利于我们开发过程中核对数据:

修复乱序
- 此时的CSV文件中的数据并不是按时间字段排序的,如下图:

- flink在处理上述数据时,由于乱序问题可能会导致计算结果不准,以上图为例,在处理红框2中的数据时,红框3所对应的窗口早就完成计算了,虽然flink的watermark可以容忍一定程度的乱序,但是必须将容忍时间调整为7天才能将红框3的窗口保留下来不触发,这样的watermark调整会导致大量数据无法计算,因此,需要将此CSV的数据按照时间排序再拿来使用;
- 如下图操作即可完成排序:

4. 完成排序后如下图所示:

至此,一份淘宝用户行为数据集就准备完毕了,接下来的文章将会用此数据进行flink相关的实战;
直接下载准备好的数据
- 为了便于您快速使用,上述调整过的CSV文件我已经上传到CSDN,地址:
https://download.csdn.net/download/boling_cavalry/12381698 - 也可以在我的Github下载,地址:
https://raw.githubusercontent.com/zq2599/blog_demos/master/files/UserBehavior.7z
欢迎关注公众号:程序员欣宸
微信搜索「程序员欣宸」,我是欣宸,期待与您一同畅游Java世界...
https://github.com/zq2599/blog_demos
准备数据集用于flink学习的更多相关文章
- 入门大数据---Flink学习总括
第一节 初识 Flink 在数据激增的时代,催生出了一批计算框架.最早期比较流行的有MapReduce,然后有Spark,直到现在越来越多的公司采用Flink处理.Flink相对前两个框架真正做到了高 ...
- 利用Mono.Cecil动态修改程序集来破解商业组件(仅用于研究学习)
原文 利用Mono.Cecil动态修改程序集来破解商业组件(仅用于研究学习) Mono.Cecil是一个强大的MSIL的注入工具,利用它可以实现动态创建程序集,也可以实现拦截器横向切入动态方法,甚至还 ...
- StarSpace是用于高效学习实体向量的通用神经模型
StarSpace是用于高效学习实体向量的通用神经模型,用于解决各种各样的问题: 学习单词,句子或文档级嵌入. 文本分类或任何其他标签任务. 信息检索:实体/文件或对象集合的排序,例如 排名网络文件. ...
- Apache Flink学习笔记
Apache Flink学习笔记 简介 大数据的计算引擎分为4代 第一代:Hadoop承载的MapReduce.它将计算分为两个阶段,分别为Map和Reduce.对于上层应用来说,就要想办法去拆分算法 ...
- ref:一系列用于Fuzzing学习的资源汇总
ref:http://www.freebuf.com/articles/rookie/169413.html 一系列用于Fuzzing学习的资源汇总 secist2018-04-30共185833人围 ...
- flink学习笔记-各种Time
说明:本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKh ...
- Flink学习笔记:Flink API 通用基本概念
本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKhaz ...
- flink学习笔记:DataSream API
本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKhaz ...
- Flink学习笔记:Operators之Process Function
本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKhaz ...
随机推荐
- 第2天 | 12天搞定Python,运行环境(超详细步骤)
倘若有人告诉你,他在学习Python编程,却没有安装运行环境,那你赶紧叫他滚,并离他远点,因为他在欺骗你的感情. 没有安装运行环境,程序根本无法跑起来,对错不能知根知底,试问是在学编程,还是在跟空气对 ...
- ansible-命令使用说明
1. ansible命令的使用说明 ansible 主机或组-m 模块名-a '模块参数' ansible参数 表示调用什么模块,使用模块的那些参数 • 主机和组,是在/etc/ansible/hos ...
- rabbitmq 交换机模式一 广播模式 fanout
<?php require_once "./vendor/autoload.php"; use PhpAmqpLib\Connection\AMQPStreamConnect ...
- 华为路由器配置OSPF
OSPF是什么 OSPF(Open Shortest Pass First,开放最短路径优先协议),是一个最常用的内部网管协议,是一个链路状态协议. 使用场景:适用于运营商.政府机构等大型网络中多节点 ...
- 基于risc-v架构cpu
一.定义: CPU ,全称为中央处理器单元,简称为处理器,是一个不算年轻的概念 早在 20 世纪60 年代便己诞生了第一款 CPU请注意区分"处理器"和"处理器核& ...
- POI样式设置详细解析
````````由于看到网上对poi做报告合成的内容不是很全面, ````````自己最近又有新的需求, 作为勉励, 会慢慢补充详细的样式设置, 希望也能帮到各位 设置段落方向 (默认是纵向, 这里可 ...
- okhttp的Post方式
发送post请求 public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bun ...
- 《JavaScript高级程序设计》——第一章JavaScript简介
第一章主要讲了JavaScript的诞生和发展.刚刚接触JavaScript的我,似乎对这些内容并不感兴趣,快速看了一遍就开始去看第二章了. 看完第一章,收获也就是了解到JavaScript由ECMA ...
- Azure Cosmos DB (四) 使用EF的SQL API 异地冗余
一,引言 上一篇文章中,我们介绍到使用了EF Core 与Cosmos DB SQL API 进行结合开发.同时,大家在开发过程中一定要记得EF Core 不支持Cosmos DB 的迁移.今天我们启 ...
- 4G DTU是什么 4G DTU的功能和特点
4G DTU是什么 DTU中文名称是"数据传输终端",根据数据传输时使用的传输方式网络的不同,DTU设备又可以分为很多种类,例如:4G DTU.NB-IOT DTU.LORA DT ...