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

2023大数据面试总结

文章目录

  • Flink(SQL相关后面专题补充)
    • 1. 把状态后端从FileSystem改为RocksDB后,Flink任务状态存储会发生哪些变化?
    • 2. Flink SQL API State TTL 的过期机制是 onCreateAndUpdate 还是 onReadAndWrite?
    • 3. watermark 到底是干啥的?应用场景?
    • 4. 一个flink任务中可以既有事件时间窗口,又有处理时间窗口吗?
    • 5. Flink为什么强调function实现时,实例化的变量要实现 serializable接口?
    • 6. Flink 提交作业的流程?以及与yarn的互动?
    • 7. Operator Chains了解吗?
    • 8. 10个int以数组的形式保存,保存在什么状态好?VlaueState还是 ListState?存在哪个的性能比较好?
    • 9. 一个窗口,现在只取第一帧和最后一帧,如何实现?
    • 10. 背压的原理?解决办法?
    • 11. 遇到状态放不下的场景怎么办?
    • 12. 使用flink统计订单表的GMV(商品交易总额),如果mysql中的数据出现错误,之后在mysql中做数据的修改操作,那么flink程序如何保证GMV的正确性,你们是如何解决?
    • 13. 开窗函数有哪些?
    • 14. 没有数据流的时候,窗口存在吗
    • 15. 1小时的滚动窗口,一小时处理一次的压力比较大想让他5分钟处理一次.怎么办?(问石林)
    • 16. 两个流先后顺序不确定,到达的间隔也不确定,如何拼接成宽表?(问石林)
    • 17. 为什么使用维表?什么情况下使用?
    • 18. Flink维表关联怎么做的?(问石林)
    • 19.
    • 20.

Flink(SQL相关后面专题补充)

1. 把状态后端从FileSystem改为RocksDB后,Flink任务状态存储会发生哪些变化?

  1. Flink任务中的operator-state。无论用户配置哪种状态后端(无论是memory, filesystem,rocksdb),都是使用DefaultOperatorStateBackend 来管理的, 状态数据都存储在内存中,做Checkpoint时同步到远程文件存储中(比如HDFS)。
  2. Flink任务中的keyed-state。用户在配置rocksdb时,会使用 RocksdbKeyedStateBackend 去管理状态;用户在配置memory,filesystem时,会使用HeapKeyedStateBackend去管理状态。因此就有了这个问题的结论,配置 rocksdb只会影响keyed-state存储的方式和地方,operator-state不会受到影响。

2. Flink SQL API State TTL 的过期机制是 onCreateAndUpdate 还是 onReadAndWrite?

  1. 结论:Flink SQL API State TTL 的过期机制目前只支持 onCreateAndUpdate,DataStream API 两个都支持。
  2. 剖析:
    • onCreateAndUpdate:是在创建State和更新State时【更新StateTTL】
    • onReadAndWrite:是在访问State和写入State时【更新StateTTL】
  3. 实际踩坑场景:Flink SQL Deduplicate 写法,row_number partition by user_id
    order by proctimeasc,此SQL最后生成的算子只会在第一条数据来的时候更新
    state,后续访问不会更新stateTTL,因此state会在用户设置的stateTTL时间之后过期。

3. watermark 到底是干啥的?应用场景?

  • 标识flink任务的事件时间进度,从而能够推动事件时间窗口的触发、计算
  • 解决事件时间窗口的乱序问题

4. 一个flink任务中可以既有事件时间窗口,又有处理时间窗口吗?

结论:一个 Flink 任务可以同时有事件时间窗口,又有处理时间窗口。

两个角度说明:

  1. 我们其实没有必要把一个Flink任务和某种特定的时间语义进行绑定。对于事件时间窗口来说,我们只要给它watermark,能让watermark一直往前推进,让事件时间窗口能够持续触发计算就行。对于处理时间来说更简单,只要窗口算子按照本地时间按照固定的时间间隔进行触发就行。无论哪种时间窗口,主要满足时间窗口的触发条件就行。
  2. Flink的实现上来说也是支持的。Flink是使用一个叫做TimerService的组件来管理
    timer的,我们可以同时注册事件时间和处理时间的timer,Flink会自行判断timer是否满足触发条件,如果是,则回调窗口处理函数进行计算。

5. Flink为什么强调function实现时,实例化的变量要实现 serializable接口?

其实这个问题可以延伸成3个问题:

  1. 为什么Flink要用到Java序列化机制。和Flink类型系统的数据序列化机制的用途有啥区别?
  2. 非实例化的变量没有实现Serializable为啥就不报错,实例化就报错?
  3. 为啥加transient就不报错?

上面3个问题的答案如下:

  1. Flink写的函数式编程代码或者说闭包,需要Java序列化从JobManager分发到 TaskManager,而Flink类型系统的数据序列化机制是为了分发数据,不是分发代码,可以用非Java的序列化机制,比如Kyro。
  2. 编译期不做序列化,所以不实现Serializable不会报错,但是运行期会执行序列化动
    作,没实现Serializable接口的就报错了
  3. Flink DataStreamAPI的Function作为闭包在网络传输,必须采用Java序列化, 所以要通过Serializable接口标记,根据Java序列化的规定,内部成员变量要么都可序列化,要么通过transient关键字跳过序列化,否则Java序列化的时候会报错。静态变量不参与序列化,所以不用加transient。

6. Flink 提交作业的流程?以及与yarn的互动?

7. Operator Chains了解吗?

为了更高效地分布式执行,Flink 会尽可能地将operator的subtask链接(chain)在一起形成task。每个task在一个线程中执行。

将operators链接成task是非常有效的优化:它能减少线程之间的切换,减少消息的序列化/反序列化,减少数据在缓冲区的交换,减少了延迟的同时提高整体的吞吐量。这就是Operator Chains(算子链)。

8. 10个int以数组的形式保存,保存在什么状态好?VlaueState还是 ListState?存在哪个的性能比较好?

ValueState[Array[Int]] update形式。

ListState[Int]:add形式添加。

对于操控来说ListState方便取值与更改。

按键分区状态(Keyed State)选择ValueState ListState。
算子状态(Operator State)选择ListState。

9. 一个窗口,现在只取第一帧和最后一帧,如何实现?

10. 背压的原理?解决办法?

11. 遇到状态放不下的场景怎么办?

有时候需要求uv,内存或者状态中存过多数据,导致压力巨大,这个时候可以结合 Redis或者布隆过滤器来去重。

注意:布隆过滤器存在非常小的误判几率,不能判断某个元素一定百分之百存在,所以只能用在允许有少量误判的场景,不能用在需要100%精确判断存在的场景。

12. 使用flink统计订单表的GMV(商品交易总额),如果mysql中的数据出现错误,之后在mysql中做数据的修改操作,那么flink程序如何保证GMV的正确性,你们是如何解决?

CDC 动态捕捉MySQL数据变化,实时处理后数据入湖-Hudi,MOR 机制 快速对下游可见。

另:一般也会有离线Job来恢复和完善实时数据。

13. 开窗函数有哪些?

  • Flink SQL:
    • 待补充
  • Flink Stream:
    • ReduceFunction、AggregateFunction:窗口不维护原始数据,只维护中间结果。每次基于中间结果和增量数据进行聚合
    • ProcessWindowFunction:维护全部原始数据,窗口触发时进行全量聚合

14. 没有数据流的时候,窗口存在吗

不存在,没有数据,窗口不产生

15. 1小时的滚动窗口,一小时处理一次的压力比较大想让他5分钟处理一次.怎么办?(问石林)

自定义触发器,4个方法,一个Close三个用于控制计算和输出

16. 两个流先后顺序不确定,到达的间隔也不确定,如何拼接成宽表?(问石林)

因为无法确定先到的是哪个流,所以没法用 internal join?因为这个需要指定拼接的驱动主流?
在这里插入图片描述

17. 为什么使用维表?什么情况下使用?

在一些数据量较小,且变化不大的场景下使用维表(如省份信息关联查询拼接)

18. Flink维表关联怎么做的?(问石林)

1、async io
2、broadcast
3、async io + cache
4、open方法中读取,然后定时线程刷新,缓存更新是先删除,之后再来一条之后再负责写入缓存

19.

20.

相关文章:

2023大数据面试总结

文章目录 Flink(SQL相关后面专题补充)1. 把状态后端从FileSystem改为RocksDB后,Flink任务状态存储会发生哪些变化?2. Flink SQL API State TTL 的过期机制是 onCreateAndUpdate 还是 onReadAndWrite?3. watermark 到底…...

udev自动创建设备节点的机制

流程框图如下 自动创建 1 内核检测到设备插入后,会发送一个uevent事件到内核中,并提供有关硬件设备的信息。 2 udevd守护程序收到uevent事件后,创建一个设备类,(向上提交目录信息),会在内核中…...

访问局域网内共享文件时报错0x80070043,找不到网络名

我是菜鸡 此篇只为分享一个我遇到的很简单的但是排查了好久的小问题。 我的网络环境是在校园网内, 自己的办公电脑设置了固定IP:10.11.128.236,同事电脑IP为:10.11.128.255 本人需要访问同事在局域网内分享的文件,…...

Java定时器

对于定时器的设定,想必大家在不少网站或者文章中见到吧,但是所谓的定时器如何去用Java代码来bianx呢??感兴趣的老铁,可以看一下笔者这篇文章哟~~ 所谓的定时器就是闹钟!! 设定一个时间&#x…...

科普js加密时出现的错误

当你在使用Babel解析JavaScript代码时,可能会遇到一个错误信息:“Deleting local variable in strict mode”(在严格模式下删除本地变量)。这个错误信息通常表示你正在尝试删除一个使用let或const关键字声明的变量。在JavaScript的…...

MYSQL优化——B+树讲解

B-/B树看 MySQL索引结构 B-树 B-树,这里的 B 表示 balance( 平衡的意思),B-树是一种多路自平衡的搜索树.它类似普通的平衡二叉树,不同的一点是B-树允许每个节点有更多的子节点。下图是 B-树的简化图. B-树有如下特点: 所有键值分布在整颗树中; 任何一…...

Rokid Jungle--Station pro

介绍和功能开发 YodaOS-Master操作系统:以交换计算为核心,实现单目SLAM空间交互,具有高精度、实时性和稳定性。发布UXR2.0SDK,为构建空间内容提供丰富的开发套件 多模态交互 算法原子化 多种开发工具协同 多生态支持 骁龙XR2…...

如何实现微服务

一、问题拆解 1.1、客户端如何访问这些服务 原来的Monolithic方式开发,所有的服务都是本地的,UI可以直接调用;现在按功能拆分成独立的服务,跑在独立的虚拟机上的Java进程了。客户端UI如何访问他的? 后台有N个服务&a…...

MySQL如何进行增量备份与恢复?

目录 一、MySQL 介绍 二、增量备份 三、备份恢复 一、MySQL 介绍 MySQL是一款开源的关系型数据库管理系统(RDBMS),它以其可靠性、灵活性和易于使用而备受赞誉。以下是关于MySQL数据库的介绍: MySQL是由瑞典公司MySQL AB开发&…...

微服务框架

一、目标 微服务框架通过组件化的方式提供微服务的开发部署、服务注册发现、服务治理与服务运维等能力。主流的微服务框架有开源的Spring Cloud、Dubbo与Service Mesh等,各大云厂商也基于开源的微服务框架,集成相关的云服务,实现企业级的微服…...

(matplotlib)如何让各个子图ax大小(宽度和高度)相等

文章目录 不相等相等 import matplotlib.pyplot as plt import numpy as np plt.rc(font,familyTimes New Roman) import matplotlib.gridspec as gridspec不相等 我用如下subplots代码画一行四个子图, fig,(ax1,ax2,ax3,ax4)plt.subplots(1,4,figsize(20,10),dpi…...

python http 上传文件

文章目录 改进质量 import random import requests from requests_toolbelt.multipart.encoder import MultipartEncoderurl http://ip:port/email data MultipartEncoder(fields{receiverId: xxxx163.com,mailSubject: mailSubject,content: content,fileList: (file_name, …...

IPO解读:Instacart曲折上市,业务模式如何持续“绚烂”?

商业世界的模式创新就像夜空中的烟火,而上升期的烟火总是绚烂的。 近日,美国商品配送业的鼻祖Instacart重新启动了IPO,并于9月11日,更新了招股书,将发行价定为每股26-28美元,计划融资6.16亿美元。值得一提…...

使用sql profile 稳定执行计划的案例

文章目录 1.缘起2.变慢的sql3.检查瓶颈4.解决办法4.1 SQLTXPLAIN 也称为 SQLT4.11 下载coe_xfr_sql_profile.sql4.12 使用方法4.13 执行coe_xfr_sql_profile.sql4.14 执行coe_xfr_sql_profile.sql产生的sql profile文件4.15 验证 4.2 SQL Tuning Advisor方式4.21 第一次Tuning …...

海南大学金秋悦读《乡村振兴战略下传统村落文化旅游设计》2023新学年许少辉八一新书​

海南大学金秋悦读《乡村振兴战略下传统村落文化旅游设计》2023新学年许少辉八一新书​...

[N0wayback 2023春节红包题] happyGame python反编译

这个反编译的比较深 一,从附件的图标看是python打包的exe文件,先用pyinstxtractor.py 解包 生成的文件在main.exe_extracted目录下,在这里边找到main 二,把main改名为pyc然后加上头 这个头从包里找一个带头的pyc文件&#xff…...

Redis 初识与入门

1. 什么是Redis Redis 是一种基于内存的数据库,对数据的读写操作都是在内存中完成,因此读写速度非常快,常用于缓存,消息队列、分布式锁等场景。 Redis 提供了多种数据类型来支持不同的业务场景,比如 String(字符串)、…...

【STM32】片上ADC的初步使用

基于stm32f103系列 基于《零死角玩转 STM32F103—指南者》 ADC简介 stm32f103上的ADC 数量:3 精度:12bit(4096) 通道:ADC1,ADC2均有16个通道,ADC3有8个 功能:   转换结束、注入转换结束和发生模拟看门狗事件时产生中断。   …...

esxi下实现ikuai相同的两个网卡,单独路由配置

1.首先安装配置双网卡。 因为esxi主机只接入了一根外网的网线,那么我们这两个网卡都是一样的网卡,具体的到系统里面进行设置。 2.开机安装系统 进入配置界面,此处就不用多说了,可以看我之前的文档,或者网上其他人的安…...

Windows环境下Elasticsearch相关软件安装

Windows环境下Elasticsearch相关软件安装 本文将介绍在 windows 环境下安装 Elasticsearch 相关的软件。 1、安装Elasticsearch 1.1 安装jdk ElasticSearch是基于lucence开发的,也就是运行需要java jdk支持,所以要先安装JAVA环境。 由于ElasticSear…...

配置Jedis连接池

一、概述 Jedis本身是线程不安全的,并且频繁的创建和销毁连接会有性能损耗,因此推荐使用Jedis连接池代替Jedis的直连方式。 二、创建连接池 public class JedisConnectionFactory {private static final JedisPool jedisPool;static {//配置连接池Jedi…...

Windows 12 开源网页版

前言 Windows 12 网页版是一个开源项目,使用标准网络技术,例如 Html、CSS 和 Javascript, 希望让用户在网络上预先体验 Windows 12 Windows 12 网页版download Windows 12 网页版 gitlab项目Windows 12 网页版 downloadWindows 12 demo参考downloaddemo test 开始菜单 ​ …...

circleMidpoint(scrPt c, GLint r) 未定义的标识符,openGL第四章例子 ,画饼状图。

以下是完整的例子。在第四版 《计算机图形学 with openGL》第四章的例子中,竟然只调用了circleMidpoint(scrPt &c, GLint r) ,没有实现,我认为是系统方法,怎么找都找不到。openGL 官方文档也没找到,这不会是自定义…...

RKNN模型评估-性能评估和内存评估

基于Python的模型评估 perf_debug:进行性能评估时是否开启debug 模式。在 debug 模式下,可以获取到每一层的运行时间,否则只能获取模型运行的总时间。默认值为 False。 eval_mem: 是否进入内存评估模式。进入内存评估模式后,可以…...

window mysql-8.0.34 zip解压包安装

window系统上安装mysql8 解压版 下载压缩包 https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.34-winx64.zip安装 用解压软件解压刚下载的mysql-8.0.34-winx64.zip 的文件至d:\devs路径下。 创建配置文件my.ini到路径d:\devs\mysql-8.0.34-winx64下 [mysqld] # 设置…...

Mysql判断某个数据库中是否包含某个表,与pymysql工具函数

查看某个数据库中的全部表: SELECT table_name FROM information_schema.tables WHERE table_schema 数据库名因此查看某个库中的某个表可以使用: SELECT table_name FROM information_schema.tables WHERE table_schema 数据库名 AND table_name 表…...

快速掌握正则表达式

文章目录 限定符 Qualifier第一个常用限定符 ?第二个常用限定符 *第三个常用限定符 或运算符字符类元字符 Meta-characters\d 数字字符\w 单词字符空白符 \s.任意字符^ $ 行首行尾 贪婪与懒惰匹配 Greedy vs Lazy Match实例 1 :RGB颜色匹配实例 2 &…...

git: ‘lfs‘ is not a git command unclear

首先可以尝试 git lfs install 是否可以,不可以后就看这个连接:https://stackoverflow.com/questions/48734119/git-lfs-is-not-a-git-command-unclear。 我的是ubuntu,所以: 保证这个前提: git-lfs requires git ve…...

代码随想录--哈希--两个数组的交集

题意:给定两个数组,编写一个函数来计算它们的交集。 说明: 输出结果中的每个元素一定是唯一的。 我们可以不考虑输出结果的顺序。 import java.util.ArrayList; import java.util.HashMap; import java.util.List;public class SSS {public …...

基于腾讯文档进行应届生个人求职记录

1. 新建一个腾讯文档 电脑登录QQ,点击“腾讯文档”功能键。 2. 可以选择下载客户端,也可以直接进入网页版。(本人使用网页版) 3. 点击新建,选择在线表格。 4. 编辑表名,表内容。 5. 设置文档权限&#xf…...