- 博客(63)
- 资源 (22)
- 收藏
- 关注
原创 Spark SQL Catalyst工作流程
比如join 算子,Spark根据不同场景为该算子制定了不同的算法策略,有 BroadcastHashJoin、ShuffleHashJoin 以及 SortMergejoin 等,**物理执行计划实际上就是在这些具体实现中挑选一个耗时最小的算法实现。RDD的运行流程:RDD-> DAGScheduler -> TaskScheduler -> worker,任务会按照编写的代码运行,代码运行效率依赖于开发者的优化,开发者会在很大程度上影响运行效率。就是提前将需要的列查询出来,其他不需要的列裁剪掉。
2024-08-10 16:43:15
1123
原创 什么是双亲委派机制
首先说一下类加载机制。我们自己写的.java文件到最终运行,必须经过编译和类加载这两个阶段。编译的过程就是把.java文件编译成.class文件。类加载就是把.class文件加载到JVM内存里面。装载完成以后会得到一个class对象,就可以使用new关键字来实例化这个对象。类加载过程需要涉及到类加载器,JVM在运行的时候会产生三个类加载器,这三个类加载器组成了一个层级关系,每一个类加载器,分别去加载不同作用范围的jar包。
2024-07-26 13:47:54
356
原创 大数据计算引擎中的Calcite
Calcite是一个动态数据库管理框架,具备数据库管理系统的功能Calcite具备SQL解析、校验、优化、生成、连接查询等功能Calcite能够为不同平台和数据源提供统一的查询引擎。
2024-04-25 15:07:21
2063
2
原创 面试官:你知道数据质量吗?
数据质量分5个方面来谈,分别是:完整性、规范性、一致性、准确性、时效性。定义好的数据质量标准需要数据衔接的上下游都认可,才是一个可以落地的质量标准。我们无法一次性定义出一个非常合理的数据质量标准,所以数据质量标准的定义是一个需要持续迭代,反复确认的过程。
2023-10-18 16:46:57
396
原创 求各区域热门商品Top3 - HiveSQL
在第二问中,可以先求出每个地区、每个商品、每个城市的点击量,这个点击量叫click_ct3,取每个地区、每个商品点击量的前三名城市。第二问: 在①的基础上,求出每个地区点击量前三的商品后,求每个商品中的点击量前三的城市分别占本商品总点击量的百分比。② 在①的基础上,求出每个地区点击量前三的商品后,求出每个商品中的点击量前三的城市分别占本商品总点击量的百分比。第一问求出了每个地区、每个商品的点击量,这个点击量叫click_ct2,并取了每个地区前三名的商品。数据集:用户点击表,商品表,城市表。
2023-09-27 22:08:42
1015
原创 Java中Comparable和Comparator有什么区别?
Comparable字面意思是“具有比较能力”,Comparator字面意思是“比较器”。
2023-08-25 16:45:09
1081
原创 JVM垃圾回收器
根据JVM不同版本的迭代,我们从最古老的垃圾回收器谈起,分别是早期的Serial和Serial Old,中期的Parallel Scavenge及Parallel Old,过渡期的ParNew和CMS,以及现在的G1,未来的ZGC。如果你的虚拟机频繁的切换手中的用户工作,把更多的时间用来做GC工作,吞吐量就下降了。也叫Serial Young或Serial New,是一个工作在新生代的垃圾回收器,所以一般会有一个搭档负责老年代的垃圾回收,叫Serial Old,这种垃圾回收器是单线程的,不支持并发。
2023-06-28 23:04:28
221
原创 Java垃圾搜集算法和垃圾回收算法
垃圾回收主要针对的是JVM的堆内存,分为新生代和老年代。按照以前的叫法,还有一个永久代,它在方法区里保存了class信息、静态变量、常量池等。从jdk-1.8开始,方法区的实现发生了一些变化,取消了永久代的概念,多出了一个叫做元空间的概念。在内存上独立了出来,跟老年代不再是物理上连续的,直接使用了JVM的内存。这样会使得内存溢出的可能性进一步减小,空间大小变得更容易扩展。与此同时,方法区也将一部分数据转移了出去,比如类的静态变量、字符串常量池等都放到了堆内存当中。
2023-06-28 18:47:39
929
1
原创 初步认识Java垃圾回收算法
首先在一区创建这些对象,然后去打标记,标记是否需要被删除,等到一区快满了的时候,并不将标记对象删除,而是将不需要删除的对象复制到二区,并且是紧凑复制,这样避免了内存碎片,需要删除的就不复制到二区了。每一次Young GC,如果对象活下来了,它的年龄就会加1,直到它满了6岁,就不往S区复制了,直接到Old区了。等到E区快满了之后,对E区对象进行打标,将不需要删除的对象复制到S0区,之后将E区和S1区的对象全部删除。等下次E区快满了之后,再将S0区和E区的对象全部打标,将不需要删除的对象全部复制到S1区。
2023-06-28 16:59:54
557
原创 JVM内存模型
栈:存储函数运行过程中的一些临时变量,存储对象的地址,指向堆区的对象(栈,本地方法栈,程序计数器都是线程私有的,意思是每个线程在运行的时候会单独开辟这样一份内存)方法区:存储一些静态的方法或变量static,类加载器classLoader等全局的数据信息。本地方法栈:存储C++的native方法。堆:存对象(堆区,方法区是全局共享的)程序计数器:指向程序当前运行的位置。
2023-06-27 23:19:01
125
原创 TCP协议的三次握手和四次挥手
这是为了防止已失效的请求报文,突然又传到服务器引起错误。假设采用两次握手建立连接,客户端向服务端发送了一个SYN1包来请求建立连接,因为某些未知原因并没有到达服务器,在中间某个网络节点产生了滞留。为了建立连接,客户端会重发SYN2包,这次的数据包正常送达服务端,服务端回复SYN+ACK后建立起了连接。但是第一包数据阻塞的网络节点突然恢复,第一包SYN1包又送达服务端,这时服务端会误认为客户端又发起了一个新的连接,从而在两次握手之后进入等待数据状态。
2023-06-17 17:13:09
521
原创 Integer和int的区别?为什么要设计封装类?
隐藏了实现细节,对使用者更加友好,只需要调用对象提供的方法,就可以完成对象的操作。① 之所以要对基本数据类型设计一个对应的封装类型,是因为Java本身是一门面向对象的语言,对象是Java操作的基础单元,我们时时刻刻都在创建对象,也随时都在使用对象。② 很多时候,在传递数据时,需要用到对象类型,比如ArrayList,HashMap这些集合,只能存储对象类型,从这一点来说,封装类型存在的意义就很大。③ Integer作为一个对象类型,封装了一些方法和属性,我们可以利用这些方法来操作数据。为什么要设计封装类?
2023-05-20 11:21:33
609
原创 事务与分布式事务
oft state(软状态):软状态也称为弱状态,和硬状态相对,是指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据同步的过程存在延时。C:一致性(Consistency),数据在多个副本中保持一致,可以理解成两个用户访问两个系统A和B,当A系统数据有变化时,及时同步给B系统,让两个用户看到的数据是一致的。由于CAP中一致性C和可用性A无法兼得,提出了BASE理论,它通过牺牲数据的强一致性,来获得可用性。
2023-05-06 20:36:36
54
原创 Spark任务提交流程
Driver在任务提交的本地机器上运行,Driver启动后会和ResourceManager通讯,申请启动ApplicationMaster;随后ResourceManager分配Container,在合适的NodeManager上启动ApplicationMaster,此时的ApplicationMaster的功能相当于一个ExecutorLaucher(加载器),只负责向ResourceManager申请Executor内存;
2023-05-06 15:43:04
613
原创 Spark任务执行流程
Driver启动,创建SparkContextSparkContext 向资源管理器注册,并向资源管理器申请运行 Executor资源管理器分配启动 Executor 所需的资源,然后资源管理器启动 ExecutorExecutor 发送心跳至资源管理器Executor 向 SparkContext 注册自己,并向 SparkContext 申请 Task,等待 Task 提交SparkContext 构建 DAG 有向无环图将 DAG 分解成 Stage(TaskSet)把 Stage
2023-05-03 17:16:18
2358
原创 MySQL-5.7.36安装教程(Windows版)
有警告,说服务名已经被占用了。原因是之前的MySQL没有卸载干净。以管理员身份运行cmd,执行一下命令删除服务名即可。右击此电脑->属性->高级系统设置->环境变量。可以看到已经没有警告了,继续执行以下步骤。缺少C环境,按照以下步骤安装即可。配置安装路径和数据存放路径。删除之前配置的环境变量。
2023-04-10 17:55:31
580
原创 网站独立访客数UV的统计--Flink实现
问题描述:统计每一小时的网站独立访客数UV(Unique Visitor)问题背景:这是尚硅谷大数据技术之电商用户行为数据分析的一道例题,属于海量数据去重问题。武晟然老师讲授的方法是,自定义布隆过滤器进行UV统计。受到老师的启发,并结合多篇网络文章,本文给出了 ①Flink自带的布隆过滤器 ②Redis整合布隆过滤器 两种方法,进行UV去重统计。数据集:UserBehavior.csv。
2023-03-20 22:44:18
701
pycharm-community-2020.1.2.exe
2020-06-16
2019年第十六届五一赛优秀论文.pdf
2020-03-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人