自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(93)
  • 收藏
  • 关注

原创 数据湖:Apache Iceberg在腾讯的探索和实践

摘要:今天分享的是Apache Iceberg在腾讯内部的探索和实践。本文结合腾讯大数据技术分享内容和2020全球软件开发大会分享内容进行整理,主要内容包括:1、数据湖技术概述2、Apache Iceberg的简介3、腾讯为什么选择Apache Iceberg4、腾讯看点万亿数据下的业务痛点5、Apache Iceberg在看点实践6、Apache Iceberg读写和删除Apache Iceberg新一代数据湖技术Apache Iceberg是一种新的表格格式,用于存储移动

2021-08-11 09:35:08 400

原创 【源码】FlinkSQL 流式去重源码解析

目录去重基类处理时间的 First Row处理时间的 Last Row事件时间的去重往期精选▼本文基于 flink 1.12.0 版本进行源码解析笔者之前在使用FlinkSQL的去重和TopN 功能时只是简单的看了下官网,然后用 sql 实现了功能,但是还有些疑问没有解决。比如:去重算子占用的状态有多少?另外不使用 mini-batch 模式,去重的结果很单一,升序就一直输出最后一条(降序就只输出第一条数据)。为了解决这些疑问,特意研究了下去重部分的源码。 去重...

2021-05-25 08:59:58 881

原创 从一个案例研究 磁盘对Flink中RocksDB状态后端的影响

RocksDB是Flink中的一个状态后端,它允许作业的状态大于可用内存量,因为状态后端可以将状态溢出到本地磁盘。这意味着磁盘性能可能会影响使用RocksDB的Flink作业的性能。通过一个案例研究,本文说明了使用RocksDB的Flink作业的吞吐量下降问题,并演示了我们如何将底层磁盘的性能确定为根本原因。作业和执行环境我们处理的是一个典型的物联网(IoT)工作,它处理数百万台设备发出的事件流。每个事件都包含设备标识符(ID)、事件类型和生成事件时的时间戳。作业基于设备ID对流进行分区,并以状态存

2021-05-20 10:06:01 702

原创 【Flink SQL引擎】:Calcite 功能简析及在 Flink 的应用

文章目录1. Calcite 是什么?2. Calcite 谁在用?3. 概念解析4. 整体模块和处理流程5. 流处理语句支持现状6. Flink 与 Calcite1. Calcite 是什么? Apache Calcite 是一个动态数据的管理框架,可以用来构建数据库系统的语法解析模块 不包含数据存储、数据处理等功能 可以通过编写 Adaptor 来扩展功能,以支持不同的数据处理平台 Flink SQL 使用并对其扩展以支持 SQL 语句的

2021-02-08 19:41:09 1185 2

原创 FLink聚合性能优化--MiniBatch分析

文章目录一、MiniBatch的演进思路 1、MiniBatch版本 2、适用场景 3、普通聚合与MiniBatch聚合对比 A、Simple Aggregation普通聚合 B、MiniBatch Aggregation微批聚合 二、MiniBatch作用的SQL语句 分类1、 window agg 分类2、group agg 分类3、over agg 三、MiniBatch三类优化手段 1、Local-Global聚合(本地-全局聚

2021-02-08 15:19:19 2776

原创 Flink Table 的三种 Sink 模式

作为计算引擎 Flink 应用的计算结果总要以某种方式输出,比如调试阶段的打印到控制台或者生产阶段的写到数据库。而对于本来就需要在 Flink 内存保存中间及最终计算结果的应用来说,比如进行聚合统计的应用,输出结果便是将内存中的结果同步到外部。、就 Flink Table/SQL API 而言,这里的同步会有三种模式,分别是 Append、Upsert 和 Retract。实际上这些输出计算结果的模式并不限于某个计算框架,比如 Storm、Spark 或者 Flink DataStream 都可以应用这

2021-02-06 22:08:25 1605

原创 Java 如何线程间通信,面试被问哭。。。

​Java 如何线程间通信,曾经小编面试被问哭的一道题。。正常情况下,每个子线程完成各自的任务就可以结束了。不过有的时候,我们希望多个线程协同工作来完成某个任务,这时就涉及到了线程间通信了。本文涉及到的知识点: thread.join() object.wait() object.notify() CountdownLatch CyclicBarrier FutureTask Callable 下面我从几个例子作为切入点来讲解下

2021-02-06 11:09:05 239 1

原创 idea导入maven的项目,pom.xml怎么不会自动下载呢??

可以对着pom.xml右键,点击reimport看看有没有下载进度条

2021-02-05 22:58:27 1354 1

原创 Java 中 CompletableFuture 使用详解

1、 runAsync 和 supplyAsync方法CompletableFuture 提供了四个静态方法来创建一个异步操作。public static CompletableFuture<Void> runAsync(Runnable runnable)public static CompletableFuture<Void> runAsync(Runnable runnable, Executor executor)public static <U>

2021-02-01 22:09:15 693 1

原创 maven更改镜像路径为阿里镜像

maven仓库默认在国外,使用难免很慢,尤其是下载依赖的时候,换为国内镜像,下载速度会变快很多。国内支持maven镜像的有阿里云,开源中国等,这里换为阿里云的。maven每更新一次镜像地址,都会重新下载一次包修改方法:修改maven根目录下的conf文件夹中的setting.xml文件(或者当前用户目录 的 .m2 目录下的 setting.xml 文件)内容如下:<mirrors> <mirror> <id>alimaven..

2021-01-23 21:40:42 747

原创 Java并发编程实战—恢复中断

中断是一种协作机制,一个线程不能强制其他线程停止正在执行的操作而去执行其他操作。什么是中断状态?线程类有一个描述自身是否被中断了的boolean类型的状态,可以通过调用.isInterrupted()方法来查看。官方解释如下:简单来说,这个方法如果返回 true ,那么表示线程已经被中断。恢复中断这里提到的 “恢复中断” 绝对不是 “从中断中恢复” 的意思!在《Java并发编程实战》一书第五章 p78页,首次提到了这个恢复中断的概念,而当我看到第七章的时候才明白这里为什么要恢..

2021-01-19 11:37:06 360 2

原创 阿里巴巴2020年双11: Flink流批一体化真的来了 (Flink Forward 2020  PPT)

​随着双11在11月12日午夜结束,2020 双十一购物节的商品总销售额(GMV)达到741亿美元。在Apache Flink的支持下,整个节日期间,GMV数值将稳定地实时显示在我们的大屏幕中。此外,在今年的活动中,基于Flink的阿里巴巴实时计算平台成功通过了年度测试。除GMV仪表板外,Flink还为许多其他关键服务提供了支持。这些服务包括用于搜索和推荐的实时机器学习,实时广告反欺诈,菜鸟订单状态的实时跟踪和反馈,ECS实时攻击检测以及对大型基础架构的监视和警报。实时业务和数据量每年都在急剧增加。

2020-12-27 22:18:30 592

原创 Azar公司基于Flink的匹配生成服务实践

为什么我们选择Flink作为我们的匹配生成服务?Azar的发展非常迅速,现在该平台每天在高峰时段处理的请求量超过1.8亿次(在移动屏幕实时视频中“向左滑动”)。为了确保Azar的匹配生成服务能够支持不断增长的用户活动和参与度,我们重新设计了匹配生成服务,使Apache Flink成为其架构的核心。Flink被选为首选数据处理框架,因为它提供了必要的可伸缩性,稳定性和处理大量数据的状态计算的能力。可扩展性在高峰时段,我们的系统每秒处理超过5,000个匹配生成请求,每秒处理超过1200万对匹配计

2020-12-23 22:24:46 152

原创 实战:Flink 1.12 维表 Join Hive 最新分区功能体验

我们生产常有将实时数据流与 Hive 维表 join 来丰富数据的需求,其中 Hive 表是分区表,业务上需要关联上 Hive 最新分区的数据。上周 Flink 1.12 发布了,刚好支撑了这种业务场景,我也将 1.12 版本部署后做了一个线上需求并上线。对比之前生产环境中实现方案,最新分区直接作为时态表提升了很多开发效率,在这里做一些小的分享。Flink 1.12 前关联 Hive 最新分区方案 Flink 1.12 关联 Hive 最新分区表 关联Hive最新分区 Demo Flink SQL

2020-12-23 12:33:49 1855 7

原创 Flink在新浪微博的在线机器学习和实时数据分析(回复 flink 获取Flink Forward 2020  PPT。)

1 什么是微博微博是中国最大,最受欢迎的社交媒体网络平台。该网站是一个微博客平台(类似于 Twitter 或 Reddit),其功能包括消息传递,对文章进行评论,重新发布以及基于上下文浏览等的视频和图片推荐。2019 年,微博的每日活跃用户(DAU)超过 2.2 亿,每月活跃用户(MAU)达到 5.16 亿。基于人们的社交活动(例如,在世界范围内发布和共享新闻等),微博团队开发了一个社交网络,该社交网络可以将用户连接起来,并根据他们的活动和兴趣将内容分发到个人。2 微博的机器学习平台(WML)

2020-12-20 19:36:36 403 2

原创 Flink模型服务和实时特征生成在Razorpay的实践

在Flink Forward Global 2020期间,Razorpay团队展示了Apache Flink如何在其“ Mitra”数据平台中使用,以克服围绕功能生成和实时机器学习模型的挑战的方法。“ Mitra”是一个数据平台,可为Thirdwatch产品提供支持,可通过大规模提供机器学习模型来实时防止欺诈行为。本文中我将解释我们提供机器学习模型的方法,并解释为什么我们使用Flink作为流处理引擎来执行此类任务。关于RazorpayRazorpay是印度领先的支付解决方案之一,它使企业可以使.

2020-12-19 23:05:48 199 1

原创 VM VirtualBox 全屏模式 && 自动缩放模式 相互切换

【1】自动缩放模式 热键Host + C偶然一次机会,把虚拟机切换为了自动缩放模式,如下图:想要再切换为全屏模式,发现不知如何操作,后来折腾了一会儿,切换成功。以此备录一下。【2】切换为全屏模式热键Host + F切换为全屏模式的快捷键为Host+F重点!重点!重点是Host主机键是Right Ctrl。Right Ctrl键在哪呢?请看下图:切换为全屏模式时,会提示这个对话框(注意信息内容):切换成功,效果如下图:注意:全屏模式与自动缩放模式的区...

2020-12-07 22:34:52 3509 1

原创 「Flink」配置使用Flink调试WebUI

很多时候,我们在IDE中编写Flink代码,我们希望能够查看到Web UI,从而来了解Flink程序的运行情况。按照以下步骤操作即可,亲测有效。1、添加Maven依赖<dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-runtime-web_2.11</artifactId> <version>1.9.0&...

2020-12-06 17:16:00 3250 1

原创 Idea实体类上加@Data注解但get/set方法不生效

Idea实体类上加@Data注解但get/set方法不生效,由于距离上次配置idea已经很长时间了,所以在遇到这个问题时做出一个总结。解决方法:需要安装lombok插件如果显示“Installed”,那么就需要启用该插件选择“Installed” --> 搜索“lombok” --> 勾选 --> 点击Apply -- > 点击OK之后,重启IDEA...

2020-12-06 12:44:20 3402 1

原创 解决IDEA中maven添加dependency过慢的问题

每次在IDEA中给pom.xml添加项目依赖时下载的速度都会特别的慢,慢到自己开始怀疑人生。这是由于maven自带的仓库在国外,所以访问起来特别的慢,所以我们改一下配置,将maven访问仓库的网址设置到国内就可以了。那么国内比较好的仓库地址当然是像阿里云、清华大学、中国科学技术大学这些了。方式如下:我们在IDEA的安装目录下找到/plugins/maven/lib/maven2/conf或者/plugins/maven/lib/maven3/conf目录(如果两个都有建议都改掉),向其中的se...

2020-12-05 21:45:33 1348

原创 Flink 使用 murmurhash3 做KeySelector

背景由于项目中有报文排重需求,所以会将报文字符串作为分布式锁key。考虑到报文不定长并且散列性不太好,如其作为锁key,特别是当key值过大时,使用redis进行读写都会有相对的性能下降。 参考文献里测试对比: 长度为10:写平均耗时0.053ms,读0.040ms 长度为20000:写平均耗时0.352ms,读0.084ms 一种简单的方案是对报文进行一次md5,然后拿来做key。考虑到md5的性能并不高,找到了更合适的murmurhash3非加密哈希算法:算

2020-12-05 21:22:32 724

原创 问题解决:尝试解决maven依赖找不到的n种姿势

问题场景 问题环境 问题原因 解决方案 结果 总结 参考链接 吐槽 随缘求赞问题场景公司的原仓库出了问题,需要更换新的仓库。故给了一个新的仓库地址。但是奇葩的是,更换之后,就出问题了。比如原本有A-0.0.1-SNAPSHOT.jar,在私服上面也有这个版本的jar包,但是就是没办法找到,一直提示该jar的该版本找不到。问题环境软件 版本 maven 3.2.3 IntelliJ IDEA 2019.1 问题原因接下来就是探索发现之旅了。.

2020-12-05 18:46:47 8504 1

原创 Ubuntu简单安装kafka及使用

Ubuntu简单安装kafka及使用参考地址:https://www.jianshu.com/p/d0e630c8f4aekafka是一个分布式的基于发布订阅模式的消息队列,主要应用于大数据实时处理领域。(kafka是消费者主动拉取生产者的信息)作用(所有的消息队列):(1)、解耦:不需要两个应用都同时在线(强依赖);(2)、缓冲:解决生产消息和消费消息的处理速度不一致的情况;(3)、灵活性&削封:在访问量剧增的情况下,可以使关键组件顶住突发的访问压力,而不会造成组件的崩溃;(4)、异步

2020-12-05 15:00:55 934 1

原创 Ubuntu 20.04系统下更改apt源为阿里源

Ubuntu 20.04.1 LTS已推出,一样的为期5年的服务,感觉不错,安装了一个,但是苦于使用默认源在国内下载太慢,就想着把apt源改为国内源,目前国内比较好的源,有阿里源,清华源,豆瓣源等,下面我以阿里源为例,说下如何修改。1、备份原文件修改/etc/apt目录下的sources.list,该文件是包管理工具apt用来记录软件包仓库位置的配置文件。同类型的还有在同一目录下包含.list的各文件。备份命令如下:sudo cp /etc/apt/sources.list /etc/apt/

2020-12-05 14:20:17 8058 1

原创 Hive常用函数

往期推荐Flink中Checkpoint和Savepoint 的 3 个不同点Flink实现固定时长或消息条数的触发器Flink方案设计中的4大误区使用 Broadcast State 的 4 个注意事项3种Flink State Backend | 你该用哪个?一文搞定 Flink 异步 I/OFlink State 使用的4点建议Flink在开发中的7点建议转载是一种动力 分享是一种美德,欢迎关注大数据与数据仓库公众号,回复spark领取资料...

2020-12-01 22:06:30 454

原创 简单分析Flink算子返回NULL导致的异常

假设我们作业中有这样一段逻辑stream.map(xxx).filter(_ != null).xxx,并且map算子有可能返回NULL,你觉得作业运行会抛NPE吗?明明下游有filter not null,不应该出错才对?但实际情况是运行中有可能抛出异常。1.异常信息可能抛出的异常信息大致如下:// 1. 如果map算子返回值类型为Java TupleCaused by: java.lang.NullPointerException at org.apache.flink.api.

2020-12-01 21:54:06 3042

原创 Flink的 Window 操作

Window是Flink的核心功能之一,使用好Window对解决一些业务场景是非常有帮助的。今天分享5个Flink Window的使用小技巧,不过在开始之前,我们先复习几个核心概念。Window有几个核心组件:Assigner,负责确定待处理元素所属的Window; Trigger,负责确定Window何时触发计算; Evictor,可以用来“清理”Window中的元素; Function,负责处理窗口中的数据;Window是有状态的,这个状态和元素的Key以及Window绑..

2020-12-01 21:52:39 508

原创 雪球 feed流爬虫

雪球是一个什么样的网站?雪球股票,聪明的投资者都在这里 - 雪球提供沪深港美股票实时行情、实战交流、实盘交易。雪球的Feed流样式如上图所示为用户为从雪球首页截取出来的信息流,从图中可以看出雪球的信息流包含如下几个模块:头条 直播 沪深 房产 港股 基金 美股 私募 汽车 保险雪球首页的信息流采用XML请求进行数据的异步加载,其请求地址为feed流请求地址,该请求中包含着几个重要的参数,分别如下:since_id : 信息流数据所请求的新闻起始id max.

2020-12-01 09:05:37 1115

原创 天池NL2SQL Top15方案

目录代码地址Part0: 参赛成绩Part1: 代码环境环境配置步骤如下:Part2: 预处理一. 数值类型转化二. 训练集数据清洗与分类Part3:模型介绍Part4: 后处理Part5: 模型效果评估Part6: TODO数字通用前后缀挖掘同义词解决方案BUGFIX: (FIXED)部分冗余逻辑重写附录:代码树代码地址https://github.com/yscoder-github/nl2sql-tianchiPa...

2020-11-30 22:47:28 1373 2

原创 Hive调优12法

目录1. 尽量不要使用COUNT(DISTINCT col)2. 小文件会造成资源的过度占用以及影响查询效率3. 请慎重使用SELECT *4.不要在表关联后面加WHERE条件5. 处理掉字段中带有空值的数据6. 设置并行执行任务数7.设置合理的Reducer个数8. JVM重用9. 为什么任务执行的时候只有一个reduce?10. 选择使用Tez引擎11. 选择使用本地模式12. 选择使用严格模式往期精选▼转载是一种动力 分享是一种美德,欢迎关注..

2020-11-30 22:43:51 117

原创 Hive必考面试题

笔者今年年初面试了很多个大数据开发岗位。今天整理了一点常用场景的hiveSQL,很可能就能在面试中帮到你。场景一:分组求TopN name subject score 张三 物理 66 张三 化学 89 李四 物理 90 李四

2020-11-30 22:40:09 119

原创 3种交叉验证与参数选择方式

在训练深度学习模型时,通常将数据集切分为训练集和验证集.Keras提供了两种评估模型性能的方法:使用自动切分的验证集 使用手动切分的验证集一.自动切分在Keras中,可以从数据集中切分出一部分作为验证集,并且在每次迭代(epoch)时在验证集中评估模型的性能.具体地,调用model.fit()训练模型时,可通过validation_split参数来指定从数据集中切分出验证集的比例.from keras.models import Sequentialfrom keras.layers..

2020-11-29 20:49:02 4540 1

原创 呕心沥血整理的13道Spark必问面试题

目录一. Spark有几种部署方式?请分别简要论述二. Spark提交作业参数三. 如何理解Spark中RDD的血缘关系?四. 简述Spark的宽窄依赖,以及Spark如何划分stage,每个stage又根据什么决定task个数?五. 请列举Spark的transformation算子,并简述功能七. 请描述Repartition和Coalesce联系与区别八. 分别简述Spark中的缓存机制与checkpoint机制,并指出两者的区别与联系。九. 简述Spark中共享变量(

2020-11-29 17:56:22 493

原创 Flink State 使用的4点建议

一.Operator state 使用建议慎重使用长 list下图展示的是当前版本中 task 端 operator state 在执行完 checkpoint 返回给 job master 端的 StateMetaInfo 的代码片段。由于 operator state 没有 key group 的概念,所以在修改任务并发度进行恢复时,需要将operator state中的每一个序列后的元素存储一个位置偏移量(offset),如上图红框中的offsets数组所示。另外如果...

2020-11-27 09:45:40 843

原创 Spark Shuffle调优之调节map端内存缓冲与reduce端内存占比

一. 引言本文首先介绍Spark中的两个配置参数:spark.shuffle.file.buffer map端内存缓冲 spark.shuffle.memoryFraction reduce端内存占比很多博客会说上面这两个参数是调节Spark shuffle性能的利器,实际上并不是这样的。以实际的生产经验来说,这两个参数没有那么重要,往往来说shuffle的性能不是因为这方面的原因决定的,但是整体来说还是有一点点效果的。这两个shuffle调优的小点能带来一些性能的提升,与其他...

2020-11-27 09:26:21 305

原创 Spark Shuffle调优之合并map端输出文件

引言广播变量允许开发人员将一个只读的变量缓存在每台机器上而不用在任务之间传递变量。广播变量可被用于有效地给每个节点一个大输入数据集的副本。一个Executor只需要在第一个Task启动时获得一份Broadcast数据,之后的Task都直接从本节点的BlockManager中获取相关数据。优化前默认情况下task执行算子中使用了外部的变量时,每个task都会获取一份变量的副本,有什么缺点呢?在什么情况下,会出现性能上的恶劣的影响呢?对于map这种数据结构,其存放数据的一个单位是E...

2020-11-27 09:24:42 239

原创 Spark性能调优之在实际项目中广播大变量

广播变量允许开发人员将一个只读的变量缓存在每台机器上而不用在任务之间传递变量。广播变量可被用于有效地给每个节点一个大输入数据集的副本。一个Executor只需要在第一个Task启动时获得一份Broadcast数据,之后的Task都直接从本节点的BlockManager中获取相关数据。默认情况下task执行算子中使用了外部的变量时,每个task都会获取一份变量的副本,有什么缺点呢?在什么情况下,会出现性能上的恶劣的影响呢?对于map这种数据结构,其存放数据的一个单位是Entry,还有可能会用链.

2020-11-26 09:10:44 292

原创 Flink中Checkpoint和Savepoint 的 3 个不同点

在本文中,笔者将阐述在Flink中 Savepoint 和 Checkpoint 二者的不同点以及它们的应用场景。Savepoint和Checkpoint分别是什么?Savepoint 是用来为整个流处理应用在某个“时间点”(point-in-time)进行快照生成的功能。该快照包含了数据源读取到的偏移量(offset),输入源的位置信息以及整个应用的状态。借助 分布式快照算法(Chandy-Lamport )的变体,我们可以在应用程序运行中得到某个“时间点”一致的快照。Savepoin...

2020-11-14 21:43:34 298

原创 4个角度轻松理解 Flink中的Watermark

目录有缓存就必然有延迟必须勇敢地输出排序流的第一个结果watermark 定义了何时不再等待更早的数据设想不同的策略来生成 watermark当我们第一次接触 Flink 时往往会对其中的 watermark 感到困惑。但实际上 watermark 并不复杂。在本文中我们将通过一个简单的例子来说明为什么需要水印以及它们如何工作。在下文中的例子中,我们有一个带有时间戳的事件流,但是由于某种原因流中的事件并不是按顺序到达的。图中的数字代表事件发生的时间戳(Event-time)。第一个事

2020-11-14 21:41:12 273

原创 使用 Broadcast State 的 4 个注意事项

本文将描述什么是广播状态模式(Broadcast State Pattern),广播状态与其他的 Operator State 有什么区别,最后,我们在 Flink 中使用该功能时需要考虑的一些重要的注意事项。广播状态(Broadcast State)作为Apache Flink 1.5.0 中引入的新特性,它可用于以特定方式组合和联合处理两个事件流,其中第一个流中的的数据被广播到某个算子的所有并行实例中,该算子将它们保存为状态。另一个流的事件不广播,而是发送给同一个算子的单个实例,并与广播流的事件..

2020-11-11 21:16:42 462

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除