自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Iceberg学习五】Iceberg中性能和可靠性保证

在Iceberg表中的计划可以在单个节点上完成,因为Iceberg的元数据可以用来剪除不需要的元数据文件,除了过滤不包含匹配数据的数据文件。提交被构建为假设和行动。安全的文件级操作:通过支持原子更改,Iceberg支持新的用例,比如安全地压缩小文件和安全地将延迟数据追加到表中。如果因为另一个写入器已经提交而导致原子交换失败,失败的写入器会通过基于新的当前表状态写出一个新的元数据树来重试。例如,追加通常会为追加的数据文件创建一个新的清单文件,这个清单文件可以在每次尝试时不重写清单的情况下添加到表中。

2024-02-05 17:32:10 469

原创 【Iceberg学习四】Evolution和Maintenance在Iceberg的实现

例如:当 write.metadata.delete-after-commit.enabled=false 且 write.metadata.previous-versions-max=10 时,在100次提交后,将会有10个跟踪的元数据文件和90个孤立的元数据文件。相反,您可以编写选择您需要的数据的查询,Iceberg 会自动剪除不包含匹配数据的文件。在任何写入操作完成之前,使用比预期完成时间短的保留间隔来删除孤立文件是危险的,因为如果正在进行的文件被认为是孤立的并被删除,可能会破坏表。

2024-02-05 17:28:50 1319

原创 【Iceberg学习三】Reporting和Partitioning原理

分区是一种通过在写入时将相似的行分组在一起来加速查询的方法。将日志表配置为按 event_time 的日期进行分区,将把具有相同事件日期的日志事件分组到同一个文件中。Iceberg 跟踪那个日期,并将使用它来跳过其他没有有用数据的日期的文件。Iceberg 可以按年、月、日和小时的粒度来分区时间戳。它还可以使用分类列,比如在这个日志示例中的 level,将行存储在一起以加速查询。

2024-02-05 17:27:38 1094

原创 【Iceberg学习二】Branch和Tag在Iceberg中的应用

Iceberg 表元数据保持一个快照日志,记录了对表所做的更改。快照在 Iceberg 中至关重要,因为它们是读者隔离和时间旅行查询的基础。为了控制元数据大小和存储成本,Iceberg 提供了快照生命周期管理程序,如 expire_snapshots,用于删除基于表快照保留属性不再需要的快照和数据文件。为了更精细的快照生命周期管理,Iceberg 支持分支和标签,这些是具有独立生命周期的快照的命名引用。这种生命周期由分支和标签级别的保留策略控制。分支是独立的快照血统,并指向该血统的头部。

2024-02-05 17:25:10 704

原创 【Iceberg学习一】什么是Iceberg?

Apache Iceberg 是一个面向大型分析数据集的开放表格格式。Iceberg 为包括 Spark、Trino、PrestoDB、Flink、Hive 和 Impala 在内的计算引擎增加了表格功能,使用一种高性能的表格格式,其工作方式就像一个 SQL 表一样。

2024-02-05 17:22:03 663

原创 【SparkML实践7】特征选择器FeatureSelector

LSH的基本思想是使用一族函数(“LSH族”)将数据点哈希到桶中,使得彼此接近的数据点有很高的概率落在同一个桶里,而彼此距离较远的数据点则很可能落在不同的桶中。在LSH中,我们定义一个假正例为一对距离较远的输入特征(满足d(p,q)≥r2)被哈希到同一个桶中,我们定义一个假反例为一对接近的特征(满足d(p,q)≤r1)被哈希到不同的桶中。自连接会产生一些重复的对。在Spark中,不同的LSH族在不同的类中实现(例如,MinHash),并且每个类中都提供了特征转换、近似相似性连接和近似最近邻搜索的API。

2024-02-04 16:10:15 1053

原创 【Spark实践6】特征转换FeatureTransformers实践Scala版--补充算子

这个参数也可以设置为“skip”,表示应该从结果数据框中过滤掉包含无效值的行,或者“optimistic”,表示不应该检查列中的无效值,并且应该保留所有行。如果用户选择保留 NaN 值,这些值将被特殊处理并放入它们自己的桶中,例如,如果使用了 4 个桶,那么非 NaN 数据将被放入 buckets[0-3],但 NaN 将被计入一个特殊的 bucket[4]。在这个例子中,Imputer 将替换所有出现的 Double.NaN(缺失值的默认值)为从相应列的其他值计算出的均值(默认的填充策略)。

2024-02-02 12:25:34 1308

原创 【SparkML实践5】特征转换FeatureTransformers实战scala版

本章节主要讲转换1。

2024-02-01 11:48:43 1132 2

原创 【SparkML实践4】Pipeline实战scala版

对于 Estimator 阶段,则调用 fit() 方法来产生一个 Transformer(它成为 PipelineModel 或已拟合 Pipeline 的一部分),然后在 DataFrame 上调用该 Transformer 的 transform() 方法。例如,一个学习算法是一个Estimator,它在DataFrame上训练并产生一个模型。一个特征转换器可能会取一个DataFrame,读取一个列(例如,文本),将其映射到一个新列(例如,特征向量),并输出一个附加了映射列的新DataFrame。

2024-02-01 11:45:35 1153

原创 【SparkML系列3】特征提取器TF-IDF、Word2Vec和CountVectorizer

这种方法避免了计算全局的词到索引映射表,这对于大型语料库来说可能代价很高,但它会遭受潜在的哈希冲突,不同的原始特征经过哈希可能会变成相同的词项。词频-逆文档频率(Term frequency-inverse document frequency,简称TF-IDF)是一种在文本挖掘中广泛使用的特征向量化方法,用以反映一个词语对于语料库中文档的重要性。一个可选的参数minDF也会影响拟合过程,它指定了一个词必须出现在多少个文档中才能被包含在词汇表中,这个数字可以是具体数目(如果小于1.0,则表示比例)。

2024-01-31 20:11:20 1575

原创 【SparkML系列2】DataSource读取图片数据

该图像数据源用于从目录加载图像文件,它可以通过 Java 库中的 ImageIO 加载压缩图像(jpeg、png 等)到原始图像表示。加载的 DataFrame 有一个 StructType 列:“image”,包含存储为图像模式的图像数据。除了一些通用的数据源,如 Parquet、CSV、JSON 和 JDBC 外,我们还提供了一些专门用于机器学习的数据源。data:BinaryType(以 OpenCV 兼容的顺序排列的图像字节:在大多数情况下为逐行 BGR)

2024-01-31 20:07:46 617

原创 【SparkML系列1】相关性、卡方检验和概述器实现

我们通过概述器为数据帧提供向量列的汇总统计信息。可用的指标包括列最大值、最小值、平均值、总和、方差、标准差以及非零元素的数量,还有总计数。/*** @description 概述器*/.builder//mean: 用于计算向量列的均值。//metrics: 允许用户指定需要计算的多个统计量,例如均值、方差、总和等。//variance: 用于计算向量列的方差。${meanVal* @description 概述器。

2024-01-31 20:06:12 609

原创 【Spark系列6】如何做SQL查询优化和执行计划分析

Apache Spark SQL 使用 Catalyst 优化器来生成逻辑执行计划和物理执行计划。逻辑执行计划描述了逻辑上如何执行查询,而物理执行计划则是 Spark 实际执行的步骤。

2024-01-30 13:17:10 1314 1

原创 【Spark系列5】Dataframe下常用算子API

udf(): 定义一个新的用户定义函数。

2024-01-30 13:11:38 639

原创 【Spark系列4】Task的执行

TaskScheduler根据调度的顺序,依次调度TaskSetManager中的TaskSet,对于每个TaskSet遍历所有本地化级别,从小到大尝试在Executor分配Task,根据每个WorkerOffer的executorId和hostname,使用TaskSetManager判断在当前本地化级别中,是否可以在该Executor或Host上分配任务,直到该本地化级别无法分配Task,再将本地化级别提高一级再次尝分配Task。这些映射关系的建立,时根据生成Task时Task运行的最佳位置确定的。

2024-01-29 15:27:28 1464

原创 【Spark系列3】RDD源码解析实战

RDD:弹性分布式数据集,Resillient Distributed Dataset的缩写。个人理解:RDD是一个容错的、并行的数据结构,可以让用户显式的将数据存储到磁盘和内存中,并能控制数据的分区。同时RDD还提供一组丰富的API来操作它。本质上,RDD是一个只读的分区集合,一个RDD可以包含多个分区,每个分区就是一个dataset片段。RDD可以互相依赖。

2024-01-28 18:05:27 1105

原创 【Spark系列2】Spark编程模型RDD

RDD最初的概述来源于一片论文-伯克利实验室的Resilient Distributed Datasets:A Fault-Tolerant Abstraction for In-Memory Cluster Computing。这篇论文奠定了RDD基本功能的思想RDD实际为Resilient Distribution Datasets的简称,意为弹性分布式数据集。

2024-01-28 18:01:37 1604

原创 【Spark系列1】DAG中Stage和Task的划分全流程

上面已经介绍,在一个Stage中,RDD的依赖关系是窄依赖,所以最后一个RDD的分区数量取决于其依赖的RDD的分区数量,一直依赖到该阶段的开始的RDD的分区。

2024-01-28 17:55:49 1690

原创 Typora Mac激活

输入 hasActivated="true"==e.hasActivated 进行搜索。将它改为 hasActivated="true"=="true"首先去官网选择mac版本下载安装 typora下载。找到/static/js/Licen..如下图。重新打开typora看到成功激活!然后打开typora包内容找到。编辑器打开上面文件夹。

2023-12-25 19:10:53 914

原创 【Flink系列七】TableAPI和FlinkSQL初体验

Apache Flink 有两种关系型 API 来做流批统一处理:Table API 和 SQL。

2023-12-12 23:43:00 1213 1

原创 【Flink名称解释一】什么是cataLog

元数据可以是临时的,例如临时表、或者通过 TableEnvironment 注册的 UDF。元数据也可以是持久化的,例如 Hive Metastore 中的元数据。Catalog 提供了一个统一的API,用于管理元数据,并使其可以从 Table API 和 SQL 查询语句中来访问。有两个用途:作为原生 Flink 元数据的持久化存储,以及作为读写现有 Hive 元数据的接口。Catalog 提供了元数据信息,例如数据库、表、分区、视图以及数据库或其他外部系统中存储的函数和信息。

2023-12-12 23:10:24 640

原创 【Flink系列六】Flink里面的状态一致性

目前我们看到的一致性保证都是由流处理实现的,也就是说都是在Flink流处理内部保证的;有状态的流处理,内部每个算子任务都可以有自己的状态,对于流处理器内部来说,所谓的状态一致性,其实就是我们所说的计算结果要保证准确。当一个任务在运行过程中出现故障时,可以根据 Checkpoint 的信息恢复到故障之前的某一状态,然后从该状态恢复任务的运行。(比如上篇文章说的,处理到数据6,7的时候任务挂了,从checkpoint=5恢复,会重新消费6、7的数据,端到端的状态一致性保证,并不意味着不重复处理数据)

2023-12-07 22:49:15 1277

原创 【Flink系列五】Checkpoint及Barrier原理

本章内容本文先设置一个前提,流处理的数据都是可回放的(可以理解成消费的kafka的数据)

2023-12-07 00:03:22 1614

原创 【Java原理系列2】volatile原理总结

所以在多处理器下,为了保证各个处理器的缓存是一致的,就会实现缓存一致性协议,每个处理器通过嗅探在总线上传播的数据来检查自己缓存的值是不是过期了,当处理器发现自己缓存行对应的内存地址被修改,就会将当前处理器的缓存行设置成无效状态,当处理器对这个数据进行修改操作的时候,会重新从系统内存中把数据读到处理器缓存里。在多核处理器系统中进行操作的时候,IA-32和Intel 64处理器能嗅探其他处理器访问系统内存和它们的内部缓存,处理器使用嗅探技术保证它的内部缓存、系统内存和其他处理器的缓存的数据在总线上保持一致。

2023-12-05 22:26:44 816

原创 【Java原理系列1】Java类加载机制

Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程被称作虚拟机的类加载机制。

2023-12-05 22:24:28 892

原创 【Flink系列四】Window及Watermark

上面的 watermark 让我们能够应对乱序的数据,但是真实世界中我们没法得到一个完美的 watermark 数值 — 要么没法获取到,要么耗费太大,因此实际工作中我们会使用近似 watermark — 生成 watermark(t) 之后,还有较小的概率接受到时间戳 t 之前的数据,在 Flink 中将这些数据定义为 “late elements”, 同样我们可以在 window 中指定是允许延迟的最大时间(默认为 0),可以使用下面的代码进行设置。滚动窗口的大小是固定的,且各自范围之间不重叠。

2023-12-05 22:16:45 2499

原创 【Flink系列三】数据流图和任务链计算方式

上文介绍了如何计算并行度和slot的数量,本文介绍Flink代码提交后,如何生成计算的DAG数据流图及task计算方式。

2023-12-03 21:14:55 1000

原创 【Flink系列二】如何计算Job并行度及slots数量

接上文的问题首先明确一下概念slot:TM上分配资源的最小单元,它代表的是资源(比如1G内存,而非线程的概念,好多人把slot类比成线程,是不恰当的)任务(task):线程调度的最小单元,和java中的类似。为更好的去理解后面如何计算并行度及需要的slots数量,先介绍一下几个概念。

2023-12-03 11:41:50 1501

原创 【Flink系列一】Flink运行时四大组件

Flink运行时数据结构,JobManager、TaskManager

2023-12-02 23:39:33 1136

原创 Druid源码阅读一

DruidSource

2022-05-27 16:35:42 1129

原创 python搭建本地服务器,拥抱wget

这样就不用使用rz,直接wgetpython -m SimpleHTTPServer 10928启动一个http server 当前目录的文件作为静态资源 端口号10928查看服务器上的文件 http://localhost:10928/在服务器上下载:wget http://localhost:10928/jacocoagent.jar...

2021-06-21 15:17:53 727 1

原创 MySQL面试真题

自我介绍三要素自我认知的能力。意思就是要对自己有个全方位的认识,不要觉得简历上写了就不用再说一遍了。一定要让面试官感觉你很重视,很真诚。对岗位的认知能力。从之前的经历中,挑选出匹配你要面试的岗位的职责的本领。阐述之前经历的优化点,抓住关键、可以让面试官快速的记住你。分清主次,捡重要的说。学会去听清除对方所提出的问题,不要在不了解问题的基础上畅所欲言。回答问题时,要学会摸清对方心理,捡重点阐述。技术问答问题1:MySQL主要存储引擎MyISAM和Innodb的不同之处?解答思路:可以从五个方向

2021-04-11 21:27:46 129

原创 计算机网络五层协议的体系结构

为什么是五层协议的体系结构OSI的七层网络协议体系概念清除,理论也比较完整,但它复杂又不实用。TCP/IP是一个四层的体系结构,它包含应用层、运输层、网际层和网络接口层(用网际层这个名字是为了强调这一层是为了解决不同网络的互联问题)。本质上讲,TCP和IP只有上面三层,因为下面的网络接口层没什么东西可讲。所以学习计算机原理时折中了一下,采用一种五层的协议体系结构,即简洁又能将概念阐述清楚。一般来说,谈及网络协议结构都是从上往下说,第一层是物理层,第二层是数据链路层,第三层是网际层(网络层),第四层是运

2021-04-06 23:45:18 3649

原创 TCP与UDP协议

本篇主要讲的是运输层的两个主要协议:用户数据报协议(User Datagram Protocol)传输控制协议(Transmission Control Protocol)用户数据报协议UDP概述UDP是无连接的。即发送数据之前不需要建立连接(发送结束也不需要释放连接),这样减少了开销和发送数据之间的时延。UDP是尽最大努力交付。即不保证可靠性交付。UDP是面向报文的。发送方的UDP对应用程序交下来的报文,在拼上首部后就向下交付给IP层,UDP对应用层交下来的报文,既不合并也不

2021-04-05 21:03:05 205

原创 三次握手和四次挥手

TCP 连接的建立采用客户服务器的方式,主动发起连接的叫做客户(client),而被动等待连接建立的应用程序叫做服务器TCP连接的建立:三次握手TCP在建立连接的过程叫做握手,握手需要再客户和服务器之间交换三个报文段,如下图所示假设:A为TCP客户程序,B为TCP服务器程序。最初两端TCP进程都是处于CLOSED状态;图中方框内的代表TCP进程所处的状态,请注意A主动打开连接,而B被动打开连接。一开始,B的TCP服务器进程先创建传输控制块TCB,准备接收客户端的进程连接请求,然后服务器进程就处于

2021-04-05 20:56:48 95

原创 spring启动之ApplicationContext-refresh流程

什么是ApplicationContext在上一篇我们一直是以BranFactory接口以及它的默认实现类XMLBeanFactory为例进行分析,但是spring还提供了一个接口ApplicationContext,用于扩展BeanFactory现有的功能。我们先来看下类图今天主要分析的是如何通过ApplicationContext来加载整个bean的流程。相信很多人都知道,是通过refresh()方法来开始加载加载整个bean的流程的,那我们来看这个方法,它是位于spring-conte

2021-03-21 17:18:15 669 1

原创 适配器模式

定义适配器模式(Adapter Pattern),它的功能是将一个类的接口变成客户端所期望的另一种接口,从而使原本因接口不匹配而导致无法在一起工作的两个类能够一起工作。属于结构型的设计模式。原文:Convert the interface of a class into anotherinterface clients expect.Adapter lets classes worktogether that couldn't otherwise because ofincompatible int

2021-03-20 21:43:07 289

原创 spring容器的基本实现-bean的注册

容器的基本用法我们来先看看bean的定义:public class MyTestBean {  private String testStr = "testStr";  public String getTestStr() {   return testStr; }  public void setTestStr(String testStr) {   this.testStr = testStr; }}bean并没有任何特别之处,就是一个纯粹的POJO,我们再来看看配置文件

2021-03-07 21:38:09 212

原创 策略模式

学习了一下策略模式,秉着好记性不如烂笔头的耿直,记录并分享给大家,望同学们一键三连!!!直接进入主题:策略模式的官方定义:将定义的算法家族分别封装起来,让他们之间可以互相替换,从而让算法的变化不会影响到使用算法的用户。策略模式使用的就是面向对象的继承和多态机制,从而实现一个行为在不同场景下具备不同的实现。策略模式的应用场景1. 阶梯个税:不同的税率对应不用的处理方式2. 支付方式的选择:不同的支付方式对应不同的渠道策略模式可以解决在有多种相似算法的情况下使用if.....

2021-03-06 23:19:57 124

原创 Spring注入方式及解决循环依赖

依赖注入的方式:注解注入:@Autowire和@Resource:这种注解可以直接解决循环依赖问题,不需要额外处理 构造方法器注入:构造方法注入需要使用@Lazy 注解来作用于循环依赖的属性 setter注入:setter注入也可以直接解决循环依赖问题,不需要额外处理注解注入:@Autowrite是spring提供的注解;默认按照byType的方式进行注入,默认情况下要求依赖对象必须存在,可以设置它的required属性为false,如果想使用byName方式进行注解,可以配合@qualifi

2020-07-22 23:44:55 7164 2

空空如也

空空如也

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

TA关注的人

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