当前位置: 首页 > news >正文

Flink:使用 Faker 和 DataGen 生成测试数据

《大数据平台架构与原型实现:数据中台建设实战》博主历时三年精心创作的《大数据平台架构与原型实现:数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,京东购书链接:https://item.jd.com/12677623.html,扫描左侧二维码进入京东手机购书页面。

DataGen 是开源 Flink 就内置的随机数据生成器;DataGen 生成的数据仅支持随机和序列值两种,且也并不是所有的数据类型都能支持随机或序列值,例如最常见的一个需求:针对时间类型就不能生成指定区间内的单调递增的数值,相较而言,Faker 的功能要明显强于 DataGen,我们只需掌握 Faker 这一种数据生成器就足够了。

1. 安装


sudo -u flink wget https://github.com/knaufk/flink-faker/releases/download/v0.5.3/flink-faker-0.5.3.jar -P /usr/lib/flink/lib/

2. 示例


-- example 1: currency_ratesdrop table if exists currency_rates;create table if not exists currency_rates (currency_code string,eur_rate decimal(6,4),rate_time timestamp(3)
)
with ('connector' = 'faker','fields.currency_code.expression' = '#{Currency.code}','fields.eur_rate.expression' = '#{Number.randomdouble ''4'',''0'',''10''}','fields.rate_time.expression' = '#{date.past ''15'',''SECONDS''}','rows-per-second' = '100'
);select * from currency_rates;-- example 2: transactionsdrop table if exists transactions;create table if not exists transactions (`id` string,`currency_code` string,`total` decimal(10,2),`transaction_time` timestamp(3),watermark for `transaction_time` as transaction_time - interval '30' second
) with ('connector' = 'faker','fields.id.expression' = '#{Internet.UUID}','fields.currency_code.expression' = '#{Currency.code}','fields.total.expression' = '#{Number.randomDouble ''2'',''10'',''1000''}','fields.transaction_time.expression' = '#{date.past ''30'',''SECONDS''}','rows-per-second' = '100'
);select * from transactions;

3. 资源


Flink Faker 项目地址:https://github.com/knaufk/flink-faker/?tab=readme-ov-file

表达式文档:https://github.com/datafaker-net/datafaker

相关文章:

  • 【STL】stack栈容器与list链表容器
  • 剑指offer力扣题集
  • 芯片与针灸
  • 【微服务】分布式调度框架PowerJob使用详解
  • C语言字符函数和字符串函数详解
  • FDU 2018 | 1. 求众数
  • Flask学习(四):路由转换器
  • SQL server服务连接失败,通过端口1433连接到主机 localhost的 TCP/IP 连接失败
  • 计算机设计大赛 题目: 基于深度学习的疲劳驾驶检测 深度学习
  • Python和R的区别是什么,Python与R的应用场景是什么?
  • 首页效果炫酷的wordpress免费主题模板
  • 【leetcode】二叉树的前序遍历➕中序遍历➕后序遍历
  • 静态网络配置
  • 为什么要减少Http的请求以及如何减少Http请求
  • buuctf 部分web题
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • echarts的各种常用效果展示
  • js继承的实现方法
  • js学习笔记
  • python_bomb----数据类型总结
  • SQL 难点解决:记录的引用
  • webpack4 一点通
  • 大整数乘法-表格法
  • 机器学习 vs. 深度学习
  • 跨域
  • 利用jquery编写加法运算验证码
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 协程
  • 一份游戏开发学习路线
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • 整理一些计算机基础知识!
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • ​油烟净化器电源安全,保障健康餐饮生活
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (1)Android开发优化---------UI优化
  • (C语言)fgets与fputs函数详解
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • ***检测工具之RKHunter AIDE
  • @hook扩展分析
  • @SentinelResource详解
  • [AHOI2009]中国象棋 DP,递推,组合数
  • [BJDCTF2020]The mystery of ip1
  • [BZOJ2850]巧克力王国
  • [C++]运行时,如何确保一个对象是只读的
  • [CF407E]k-d-sequence
  • [CISCN2019 华东南赛区]Web4
  • [GDOUCTF 2023]<ez_ze> SSTI 过滤数字 大括号{等
  • [Hive] CTE 通用表达式 WITH关键字
  • [Linux] LVS+Keepalived高可用集群部署
  • [MongoDB]------windos下的安装部署与基础使用
  • [one_demo_16]直接插入排序的demo
  • [Python] 字典操作及方法总结
  • [SDOI2017]数字表格