
Flink
文章平均质量分 55
Flink日常操作记录
微电子学与固体电子学-俞驰
如切如磋,如琢如磨,臻于至善。
展开
-
数据仓库分层类型-具体实例
数据仓库分层类型 架构发明者 著作 数据仓库特点 Kimball Ralph Kimbal The Data Warehouse Toolkit 自底向上 Inmon Bill Inmon Building the Data Warehouse 自顶向下 层次 细分层次 实际举例 ODS - web采集到的电商平台消费数据存入kafka DW DWD(Data Warehouse Detail)原创 2021-06-24 23:13:18 · 1574 阅读 · 0 评论 -
java.lang.String cannot be cast to org.apache.flink.table.data.StringData
16:54:56,851 INFO org.apache.hadoop.conf.Configuration.deprecation - io.bytes.per.checksum is deprecated. Instead, use dfs.bytes-per-checksumorg.apache.flink.streaming.runtime.tasks.ExceptionInChainedOperatorException: Could not forwa...原创 2021-04-01 17:00:47 · 6027 阅读 · 0 评论 -
com.alibaba.fastjson.JSONException: not close json text, token : :
flink从kafka读数据报错:com.alibaba.fastjson.JSONException: not close json text, token : :解决方案:kafka中的json数据不要带有空格或者回车。原创 2021-03-29 13:54:31 · 3938 阅读 · 0 评论 -
flink自定义trigger详解
[1]中有句话是这样的:"其实,我们要实现基于事件时间的窗口随意输出,比如1000个元素触发一次输出,那么我们就可以通过修改这个触发器来实现。"这句话的意思是,默认的自带的trigger一般是基于EventTime的。那么这1000 个元素可能跨度是一小时,也可能跨度是两小时,对吧但是显然默认的Trigger只能是盯着EventTime(时间戳)来决定是否触发计算,并不能根据元素个数进行触发。也就是说,默认的Trigger盯着的跨度是"时间差"。而不是"个数差"讲人话就是:①Fl转载 2021-03-22 10:13:37 · 2157 阅读 · 0 评论 -
flink中写入行存储、列存储时设定checkpoint多久时间间隔另存一个新文件
这个博文关注:设定多少时间,把checkpoint另存新文件 设定时间间隔 行存储(txt) DefaultRollingPolicy.builder() .withRolloverInterval(1000L) .withInactivityInterval(1000L) .withMaxPartSize(1024 * 1024 * ...原创 2021-03-16 17:02:57 · 1072 阅读 · 0 评论 -
flink的分桶策略BucketAssigner与hive的分区的对应关系
Flink写入hive Hive 分桶策略 写入hive中的一个文件夹 文件 分区 无 文件夹 其中的flink分区是用来 流/离线 计算的原创 2021-03-16 16:26:10 · 2135 阅读 · 0 评论 -
关于flink的setCommitOffsetsOnCheckpoints
提交 offset 到 kafka,一般都是作为外部进度的监控,想实时知道作业消费的位置和 lag 情况如果启用了 checkpoint,但是禁用 CommitOffsetsOnCheckpoints, kafka 消费组的 offset 不会提交到 kafka,也就是说: 消费组的 offset 是不会有变化的用法示例://创建kafka数据流val properties = new Properties() properties.setProperty("bootstrap.ser.原创 2021-03-16 16:18:57 · 4231 阅读 · 0 评论 -
flink查看operater链的中间结果+SingleOutputStreamOperator的用法
flink的算子写法常常是data.func1.func2.func3......这种写法,这种写法就不太好查看中间的结果到底是啥,不太好调试。下面换一种写法:public class dealwith { public static void main(String[] args) throws Exception { private static final String[] DATA = ...... MapOperator<Str...原创 2021-03-16 10:59:49 · 4872 阅读 · 0 评论 -
一句话概括数据血缘
数据血缘的作用:能追溯数据的源头数据血缘的技术实现:一大堆的ETL原创 2021-03-15 16:19:33 · 281 阅读 · 0 评论 -
Flink的滚动策略
滚动策略是用于checkpoint的RollingPolicy用于决定数据的滚动策略,比如文件到达多大或者经过多久就关闭当前文件,开启下一个新文件。[2]根据[3]1).In-progress :当前文件正在写入中2).Pending :当处于 In-progress 状态的文件关闭(closed)了,就变为 Pending 状态3).Finished :在成功的 Checkpoint 后,Pending 状态将变为 Finished 状态,处于...原创 2021-03-11 17:01:30 · 1632 阅读 · 0 评论 -
Managed keyedState中的ValueStateDescriptor与MapStateDescriptor
调研了下,[2]中全是概念[4]中的两个调试后目前bug free了,但是都无法输出结果Reference:[1]「Flink」使用Managed Keyed State实现计数窗口功能[2]秒懂Flink状态State-深度解读(上)『建议收藏』[3]Flink状态妙用[4]Flink利用State进行统计...原创 2021-02-11 22:03:55 · 3120 阅读 · 0 评论 -
Flink SQL的N way join
概述本文用来详解[1]SQL结构[1]中的整个md文件中的sql其实是想表达上图的这个逻辑这里的SQL写的时候需要注意一个细节: connector设置 维度表 'connector' = 'upsert-kafka' 事实表 'connector' = 'kafka' 所谓的N way Join就是在SQL里面一个fact table和多个维度表进行join,如下:SELECT t.actual_departure_date,...原创 2021-02-08 14:22:18 · 198 阅读 · 0 评论 -
kafka中的compacted topics
概述本篇用来解析[2][2]中所有Flink SQL的含义Compacted Topics那么这个概念是什么意思呢?引用[1]中的一段话As mentioned at the begining, tombstones and compacted topics are often (but not always) two sides of the same coin.A compacted topic retains the latestvaluefor eve...原创 2021-02-07 19:55:05 · 739 阅读 · 0 评论 -
Flink SQL Client中的session window图解
flink sql cookbook中的sql语句是:SELECT userid, SESSION_START(log_time, INTERVAL '10' SECOND) AS session_beg, SESSION_ROWTIME(log_time, INTERVAL '10' SECOND) AS session_end, COUNT(request_line) AS request_cntFROM server_logsWHERE status_code = '40原创 2021-02-07 16:44:22 · 1048 阅读 · 1 评论 -
Flink SQL Client中的Chained (Event) Time Windows
Flink SQL Cookbook中有这么一份说明https://github.com/ververica/flink-sql-cookbook/blob/master/aggregations-and-analytics/07/07_chained_windows.md也就是所谓的Chained (Event) Time Windows该md文件举了两个例子,前面一个例子是Chained Windows后面一个例子是Non-Chained Windows该md文件的前..原创 2021-02-04 15:07:00 · 304 阅读 · 0 评论 -
flink中的faker生成的数据后面带有~
我们大概注意到了这么一种现象:faker代码CREATE TABLE subscriptions ( id STRING, user_id INT, type STRING, start_date TIMESTAMP(3), end_date TIMESTAMP(3), payment_expiration TIMESTAMP(3), proc_time AS PROCTIME()) WITH ( 'connector' = 'fak转载 2021-02-04 12:36:53 · 445 阅读 · 0 评论 -
Flink SQL Client的Rolling Aggregation实验解析
基本概念stddev这个stddev是Strandard Deviation的缩写下面来分析一个FLINK SQL 执行Rolling Aggregation的例子如下:SELECT measurement_time, city, temperature, AVG(CAST(temperature AS FLOAT)) OVER last_minute AS avg_temperature_minute, MAX(temperature..原创 2021-02-03 20:35:46 · 353 阅读 · 0 评论 -
Flink SQL Client注册SCALA UDF完整流程
UDF的完整maven工程https://github.com/appleyuchi/Flink_SQL_Client_UDF完整操作步骤①mvn clean package或者直接点击intellij右侧的package按钮来进行编译②编译得到的jar放入到集群的下面,最终路径如下(不一定非要下面这个路径,也可以是其他你自己指定的路径):$FLINK_HOME/lib/table_api-1.0-SNAPSHOT.jar③$FLINK_HOME/conf/flink-co原创 2021-01-30 13:14:19 · 1161 阅读 · 0 评论 -
Every column needs a corresponding expression. No expression found for xxxx
故障SQL如下:CREATE TABLE server_logs ( client_ip STRING, client_identity STRING, userid STRING, request_line STRING, status_code STRING, log_time AS PROCTIME()) WITH ( 'connector' = 'faker', 'fields.client_ip.expression' =原创 2021-01-30 20:20:07 · 416 阅读 · 0 评论 -
Flink SQL Client注册Python UDF完整流程
概述本文是对[1]的复现支持的版本是组件 版本 Flink 1.11.0+ 当前Java UDF的SQL Client environment file是Currently the format for Java UDF in SQL Client environment file is:functions: - name: myUDF from: class class: foo.bar.AggregateUDF c..原创 2021-01-19 15:21:51 · 1430 阅读 · 0 评论 -
‘StreamTableDescriptor‘ object has no attribute ‘register_table_sink‘
原始代码长这样:t = t_env.from_elements([(1, 2, 'Welcome'), (2, 3, 'To'), (3, 4, 'PyFlink')], ['a', 'b', 'c'])t_env.connect(FileSystem().path(sink_path))\ .with_format(OldCsv() .field_delimiter(',') .field("add1", DataTypes.BIGINT())转载 2020-10-17 17:05:08 · 718 阅读 · 0 评论 -
Pycharm中配置Pyflink
参考[1],但是官方文档有些简略,还是需要消化一下才行①cd/home/appleyuchi/bigdat②git clonehttps://gitee.com/mirrors/apache-flink.git③打开下面的路径:④pip install flake8⑤Settings->External Tools上面就是官方文档的意思了,这么操作下来根本没法运行.----------------------------------------------...原创 2020-10-13 20:20:20 · 2070 阅读 · 0 评论 -
pyflink shell on yarn在per-job cluster模式下的实验记录
实验记录:①$FLINK_HOME/bin/yarn-session.sh②$FLINK_HOME/bin/pyflink-shell.sh yarn使用了Datastream API的PyFlink完整代码如下:import tempfileimport osimport shutilsink_path = tempfile.gettempdir() + '/streaming.csv'if os.path.exists(sink_path): if os.pa...原创 2020-06-10 22:58:32 · 811 阅读 · 0 评论 -
pyflink shell的remote模式下的实验记录
实验步骤:①$FLINK_HOME/bin/start-cluster.sh②pyflink-shell.sh remote Desktop 8082使用了DataStream API的完整python 代码:import tempfileimport osimport shutilsink_path = tempfile.gettempdir() + '/streaming.csv'if os.path.exists(sink_path): if os.path.i.原创 2020-06-10 22:38:58 · 742 阅读 · 0 评论 -
pyflink的local模式实验记录
python和flink相关的网上例子比较少先温固下shell中这些环境变量吧。 python flink shell变量 类型 scalaflink shell变量 类型 s_env pyflink.datastream.stream_execution_environment.StreamExecutionEnvironment senv StreamExecutionEnvironment st_env pyflink..原创 2020-06-10 22:22:10 · 690 阅读 · 0 评论 -
flink sql实现interval join的图解
基本概念mysql> select TIMESTAMPDIFF(DAY, '2018-03-20 23:59:00', '2015-03-22 00:00:00');+------------------------------------------------------------------+| TIMESTAMPDIFF(DAY, '2018-03-20 23:59:00', '2015-03-22 00:00:00') |+---------------------------原创 2021-01-29 23:39:28 · 1663 阅读 · 2 评论 -
Flink SQL Client注册JAVA UDF完整流程
①mvn clean package②编译得到的jar放入到集群的下面,最终路径如下:$FLINK_HOME/lib/table_api-1.0-SNAPSHOT.jar③启动Flink SQL Client输入create temporary function hash_compute as 'HashCode';如果你是先启动Flink SQL Client,后把jar拷贝到②中,那么必须重启Flink sql client,否则会识别不到。④定义sourc...原创 2021-01-29 16:55:50 · 2817 阅读 · 11 评论 -
flink sql是否支持emit策略
阿里云的flink技术文档特别喜欢挖坑。最近看到[1]中提到了emit策略。一通找,最后在[1]中发现当前的flink sql并不支持emit关键词Reference:[1]emit策略[1]flink1.12原创 2021-01-29 13:44:49 · 815 阅读 · 0 评论 -
Rows Over Window与Range Over Window的区别
概述本文是对[1]的复现Reference:[1]OVER窗口原创 2021-01-25 23:31:03 · 560 阅读 · 0 评论 -
Type TIMESTAMP(3) of table field ‘onSellTime‘ does not match with the physical type TIMESTAMP(6)
完整报错如下:[ERROR] Could not execute SQL statement. Reason:org.apache.flink.table.api.ValidationException: Type TIMESTAMP(3) of table field 'onSellTime' does not match with the physical type TIMESTAMP(6) of the 'onSellTime' field of the TableSource return t原创 2021-01-25 23:31:23 · 391 阅读 · 0 评论 -
分區策略與數據傾斜處理策略的區別
策略 目的 數據傾斜處理策略 taskmanager減緩/避免數據傾斜, 發揮集羣效力. 分區策略策略 sink的partition中的數據存放均衡原创 2021-01-22 17:01:20 · 135 阅读 · 0 评论 -
The proctime attribute ‘rowtime‘ must not replace an existing field.
故障代碼如下:// *************************************************************************// USER DATA TYPES// *************************************************************************/* * Simple POJO. */import java.sql.Timestamp;import org.apac原创 2021-01-22 15:50:57 · 579 阅读 · 0 评论 -
Flink表转流一例+何时应该使用execute()
我们常常会遇到是否应该写execute()的问题batch的print()中已经加入了executeexecuteSql()里面已经加入了 execute所以上述两种情况下,代码使用者不需要再在代码末尾加入execute()那么为什么下面这种使用executeSql以后为啥还需要在代码末尾加入execute()呢这是因为这个例子是表转流,虽然表操作时的executeSql里面已经具备了execute()功能但是这个只是激活表环境,没有流环境,所以需要再次execute原创 2021-01-21 11:57:01 · 1334 阅读 · 0 评论 -
Flink的UDF写法整理
概述这篇博客并不是简单地翻译官方文档,而是挑选常用的信息,其他忽略(例如类型推断这种内容)Overview几种UDF 文档中的解释 备注 Scalar functions map scalar values to a new scalar value. 进一出一 Table functions map scalar values to new rows(row指的是一行数据). 进一出多 Aggregate functi..原创 2021-01-16 16:56:55 · 1135 阅读 · 0 评论 -
java.lang.NoSuchMethodError: org.apache.flink.table.api.TableColumn.isGenerated()Z
完整报错如下:select * from dim_behavior;[ERROR] Could not execute SQL statement. Reason:java.lang.NoSuchMethodError: org.apache.flink.table.api.TableColumn.isGenerated()Z经过检查是因为在1.12的Flink的$FLINK_HOME/lib下面使用了1.11版本的flink-connector-clickhouse这种版本失配直接导.原创 2021-01-19 17:36:43 · 5357 阅读 · 0 评论 -
使用撤回流RetractStream的场景
概念图解下面来解释网上常用的一张图我们来看上图的第二行①以word为key,得到cnt②以cnt为key ,得到freq中间结果总结如下:流模式 数据流情况 中间operator结果 最终operator结果 AppendStream 第1条Hello到来时 第2条Hello到来时 RetractStream 第1条Hello到来时 第2条Hello到来时 使用场景原创 2021-01-18 23:34:52 · 737 阅读 · 0 评论 -
csv->Flink SQL->Clickhouse(纯DDL形式)
概述本文是对[1]的复现如果照搬[1]运行,会发现①没有报错②Clickhouse也没有数据写入,提交阿里云工单,扯皮了半天也不愿意帮忙解决今晚吃饭的时候,有了两个想法:①会不会是时区问题(检查流程后,发现并不是流写入,否定了这个才想)②SQL比较矫情,不如试试Flink SQL?环境组件 版本 Ubuntu 20.04 Flink(HA) 1.12.0 Zookeeper 3.6.0 Clickhouse 2..原创 2021-01-15 22:00:06 · 1765 阅读 · 4 评论 -
flink写入hive的时区问题
调研[2]中只是解决了显示问题[3]中解决了无法触发水印计算的问题.##################################################################################################################### 修改hive配置 案例讲解 引入相关的pom 构造hive catalog 创建hive表 将流数据插入hive,原创 2021-01-13 22:28:40 · 1400 阅读 · 0 评论 -
getResourceAsStream总是返回null以及intellij总是提示Argument ‘inputStream‘ might be null
故障代码 @Test public void parserJsonTxt() throws IOException{ ClassLoader cl = this.getClass().getClassLoader(); InputStream inputStream = cl.getResourceAsStream("data1.json"); System.out.print(inputStream); String原创 2021-01-13 17:00:41 · 1567 阅读 · 1 评论 -
Maven 项目的 org.junit.Test 获取不到(转载)
测试mvn clean compile是没问题的 ,解决办法(更改junit的依赖):<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> ...转载 2021-01-12 23:07:28 · 976 阅读 · 0 评论