准备数据集用于flink学习

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: 准备一百多万的交易数据,作为flink学习过程中的数据集

欢迎访问我的GitHub

这里分类和汇总了欣宸的全部原创(含配套源码): https://github.com/zq2599/blog_demos

本篇概览

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

在这里插入图片描述

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

在这里插入图片描述

修复乱序

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

在这里插入图片描述

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

在这里插入图片描述

  • 完成排序后如下图所示:

在这里插入图片描述
至此,一份淘宝用户行为数据集就准备完毕了,接下来的文章将会用此数据进行flink相关的实战;

直接下载准备好的数据

  • 为了便于您快速使用,上述调整过的CSV文件可以在我的Github下载,地址:

https://raw.githubusercontent.com/zq2599/blog_download_files/master/files/UserBehavior.7z

欢迎关注阿里云开发者社区博客:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...
相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
4月前
|
SQL 运维 API
Apache Flink 学习教程----持续更新
Apache Flink 学习教程----持续更新
235 0
|
8月前
|
SQL Serverless 程序员
准备数据集用于flink学习
准备一百多万的交易数据,作为flink学习过程中的数据集
准备数据集用于flink学习
|
9月前
|
流计算
从Flink 重启策略机制能学习到什么?
最近在学习Flink ,在看到Flink的重启策略机制时感觉这个设计很好。
79 0
|
10月前
|
SQL 人工智能 分布式计算
如何使用 Flink SQL 探索 GitHub 数据集|Flink-Learning 实战营
想要了解如何使用 Flink 在 GitHub 中发现最热门的项目吗?本实验使用阿里云实时计算 Flink 版内置的 GitHub 公开事件数据集,通过 Flink SQL 实时探索分析 Github 公开数据集中隐藏的彩蛋!
381 1
如何使用 Flink SQL 探索 GitHub 数据集|Flink-Learning 实战营
|
数据安全/隐私保护 流计算
|
存储 缓存 搜索推荐
|
存储 运维 供应链
为什么要学习 Apache Flink| 学习笔记
快速学习为什么要学习 Apache Flink。
303 0
为什么要学习 Apache Flink| 学习笔记
|
SQL 消息中间件 缓存
大数据开发笔记(九):Flink综合学习)(二)
Flink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。并且 Flink 提供了数据分布、容错机制以及资源管理等核心功能。Flink提供了诸多高抽象层的API以便用户编写分布式任务
242 0
大数据开发笔记(九):Flink综合学习)(二)
|
SQL 机器学习/深度学习 存储
大数据开发笔记(九):Flink综合学习)(一)
Flink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。并且 Flink 提供了数据分布、容错机制以及资源管理等核心功能。Flink提供了诸多高抽象层的API以便用户编写分布式任务
170 0
大数据开发笔记(九):Flink综合学习)(一)
|
分布式计算 资源调度 Kubernetes
Apache Flink 擅长处理无界和有界数据集
Apache Flink 擅长处理无界和有界数据集
140 0

热门文章

最新文章