自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

SunnyRivers

别以为自己到了极限,那可能只是别人的起点!

  • 博客(391)
  • 资源 (9)
  • 收藏
  • 关注

原创 Spark操作Hive表幂等性探索

旁边的实习生一边敲着键盘一边很不开心的说:做数据开发真麻烦,数据bug排查太繁琐了,我今天数据跑的有问题,等我处理完问题重新跑了代码,发现报表的数据很多重复,准备全部删了重新跑。我:你的数据操作具备幂等性吗?实习生:啥事幂等性?数仓中的表还要考虑幂等性吗?

2023-08-11 15:49:32 1010

原创 SparkSQL性能优化终极篇

随着Spark版本的不断迭代,SparkSQL底层使用了各种优化技术,无论方便性、性能都已经超越了RDD。因此SparkSQL已经是最常用的Spark开发方式,因此,这里把常用的SparkSQL性能优化技术进行汇总。

2023-06-12 13:46:10 1848 2

原创 Spark数据倾斜解决方案六:随机前缀和扩容Join(包含完整案例代码)

该想法的原因:Shuffle的时候把Key的数据可以分到不同的Task里。但是,现在的倾斜的Key非常多,成千上万,所以如果说采样找出倾斜的Key的话,并不是一个非常好的想法。需要考虑当前程序能够使用的Core的数目,扩容的问题是来解决从程序运行不了的问题,从无法运行到能运行的结果。该方案更多的是缓解数据倾斜,而不是彻底避免数据倾斜,而且需要对整个RDD进行扩容,对内存资源要求很高。同时对另外一个正常的RDD进行扩容,将每条数据都扩容成n条数据,扩容出来的每条数据都依次打上一个0~n的前缀。

2023-06-10 13:12:36 1110

原创 Spark数据倾斜解决方案五:对倾斜key采样后单独Join(包含完整案例代码)

对倾斜的Keys采样进行单独的Join操作步骤有点复杂:首先对RDD1进行采样,例如RDD1进行Sample抽样(15%)可以计算出一个结果,其是一个RDD,采样之后进行Map操作,通过reduceBykey操作计数,然后对Key和Value进行置换,通过SortByKey进行排序,再进行Map置换操作,从而找出哪一个Key值倾斜比较严重,对其进行过滤,提取到RDD11中,剩下的提取到RDD12中。避免了占用过多内存。如果倾斜的Key特别多,如50多个倾斜的Key,我们可以一个一个地对Key进行过滤处理。

2023-06-10 12:32:11 952

原创 带你彻底理解Spark的分区

我:什么是RDD?面试者:RDD是被分区的,由一系列分区组成…我:你怎么理解分区?面试者:…我:Spark中有哪些可以实现分区的方法?分别使用的场景是什么?面试者…我:Spark默认分区数是多少?如何保证一个分区对应一个文件?面试者…Spark分区是将大型数据集划分为较小的数据块,每个数据块称为分区,分区是一个逻辑数据块,对应相应的物理块Block。每个分区都可以在集群中的不同节点上并行处理,这样可以提高Spark的并行性和性能。

2023-05-05 10:53:06 1184

原创 通俗易懂理解RDD看这一篇就够了

今天面试一个大数据开发工程师,spark相关的知识感觉都能懂一点,但是连基础的RDD稍微一问深一点就不知所云,这种情况基本上是无法通过面试的,今天想用通俗的话把RDD说明白。弹性分布式数据集)是Spark中最基本的数据抽象,代表不可变、可分区、可并行计算的集合。RDD允许将计算结构缓存到内存中,这样当后续计算需要这些数据时,就能快速从内存中加载它们,这样不但提高数据的复用性,还提高了数据的计算效率。RDD主要特点包括并行计算自动容错数据本地性调用等。

2023-05-04 18:26:37 2773

原创 repartition和partitionBy的区别

旁边的实习生一脸困惑:我把一个dataset的数据往某个文件夹或hive表中写的时候可以用partitionBy对数据进行分区,可是repartition顾名思义也好像与分区有关,这两个究竟有啥区别?我该如何使用?

2023-05-04 15:26:38 877

原创 Spark需要的资源调优(Yarn Cluster模式)

Spark应用程序是粗粒度的,也就是说在提交的时候就得规划好需要多少资源,设定了不合适的资源也会影响整体性能。yarn.nodemanager.resource.memory-mb 每个nodemanager分配的内存,也就是该节点上YARN可使用的物理内存总量。官方。

2023-04-01 23:43:46 555

原创 Dataset关联性能优化

如果一大一小两个Dataset进行join,每个woker的内存足够存放小的Dataset,此时最好的处理方式就是将小的Dataset进行广播,有关广播的知识可以参考这篇文章。

2023-03-31 23:45:01 215

原创 广播变量对Spark性能产生的影响

先说一下为什么Spark会引入广播变量?我们在driver端定义了一个变量,如果要在executor端使用,spark会为把这个变量以task的形式给每个executor发送,也就是有多少个task,每个executor中就会有多少个变量,如果该变量是个集合,而且比较大,甚至会导致内存溢出。因此,引入了广播变量来解决这种问题。下面会用实际案例进行详细描述。

2023-03-31 17:25:50 285

原创 collect大RDD性能优化

众所周知,collect算子会把所有数据拉到driver端,如果数据量太大,直接会造成内存溢出。但是该算子在很多实际场景中会经常用到,这个时候就需要采取一定地方优化措施了。

2023-03-31 15:14:18 373 1

原创 Scala中如何优雅的处理Null

前言如果在scala代码还在使用ids!=null,可能会被有的人嘲笑,都什么年代了,竟然还有这样的写法,NullPointerException见少了吧?不过,据统计:Spark 源代码使用了 821 次 Option 关键字,但它也直接在像if (ids != null)。Spark 采用混合方式,大部分情况下使用 Option,但个别时候出于性能(这里主要是为了给使用这返回提示信息)原因才使用了null。一个很好的习惯是当有方法返回值可能为null的时候,使用Option来代替。什么是Op

2021-08-28 20:44:08 3676 1

原创 Python 连续数据离散化最通俗的理解与操作

前言一些数据挖掘算法,特别是某些分类算法,如ID3算法、Apriori算法等,要求数据是分类属性形式。这样,常常需要将连续属性变换成分类属性,即连续属性离散化。离散化是干啥连续属性离散化就是在数据的取值范围内设定若干个离散的划分点,将取值范围划分为一些离散化的区间,最后用不同的符号或整数值代表落在每个子区间中的数据值。所以,离散化涉及两个子任务:确定分类数以及如何将连续属性值映射到这些分类值。常用的离散化方法常用的离散化方法有等宽法、等频法和(一维)聚类。(1)等宽法将属性的值域分成具有相同宽

2021-01-05 18:26:40 10295 1

原创 python 下采样和上采样

前言由于工作数据量较大,训练模型很少直接单机python,一般都采用SparkML,最近把SparkML的工作使用python简单的写了一下,先写个上下采样,最终目的是为了让正负样本达到均衡(有人问:正负样本必须是1:1吗?1:1效果就一定最好吗?答:不一定)数据准备共20条数据,正样本1共有5条,负样本0共有15条。基础知识准备如何获取dataframe的行数pandas.DataFrame.shape 返回数据帧的形状df.shape[0] 返回行数de.shape[1] 返

2020-10-28 16:23:27 9615 2

原创 Hadoop面向行和面向列格式详解

前言说到HDFS上面存储数据的格式,一般会想到面向行存储的Avro、SequenceFile(现在较少用);面向列存储的Parquet、ORC等,那么在存储的时候如何选择呢?面向行存储格式(以Avro和SequenceFile为例)Avro基本概念Avro是一个独立于编程语言的数据序列化系统。引入的原因:解决Writable类型缺乏语言的可移植性。Avro数据文件主要是面向跨语言使...

2020-01-17 11:10:54 1379

原创 Hive压缩存储(以Parquet为例)

前言前面说了,HDFS上的数据在生产环境中一定是以压缩格式存储的,那么在Hive中如何使勇Parquet格式存储数据呢?测试数据在本地服务器上面vim test.txt1,zs2,ls3,ww4,zl由于我们一般接到的数据都是gzip压缩的文件,这里就将文件压缩为gzipgzip -c test.txt > .test.gz错误的方式创建parquet的hive表...

2020-01-09 10:22:46 1975 2

原创 HDFS文件的压缩

前言新搭建的集群,需要进行各种测试,于是让一个同事导入一些测试数据,大约1.4T左右。我进行了一个简单的hive测试//故意增加shuffleSELECT DISTINCT(COUNT id) FROM test_table;谁知道…就这么一个简单的SQL,半个小时过去后,仍然没有出结果追查原因原来同事从ftp拉取过来的数据是gzip格式的,他直接如到Hive表中…,而gzip格式的...

2020-01-04 18:06:11 7825 1

原创 Pearson相关系数和Spearman相关系数的区别

前言相关系数是用以反映变量之间的相关关系程度的统计指标。其取值范围是[-1,1],当取值为0时表示不相关,取值为[-1,0)表示负相关,取值为(0,-1],表示负相关。目前常用的两种相关性系数为皮尔森相关系数(Pearson)和斯皮尔曼等级相关系数(Spearman)简介皮尔森相关系数评估两个连续变量之间的线性关系。其中:-1 ≤ p ≤ 1p接近0代表无相关性p接近1或-1......

2019-08-29 14:31:55 69956 10

原创 MapReduce过程详解

MapReduce是一种云计算的核心计算模式,是一种分布式运算技术,也是简化的分布式并行编程模式,主要用于大规模并行程序并行问题。MapReduce的主要思想:自动将一个大的计算(程序)拆分成Map(映射)和Reduce(化简)的方式。流程图如下:数据被分割后通过Map函数将数据映射成不同的区块,分配给计算集群进行处理,以达到分布运算的效果,再通过Reduce函数将结果进行汇...

2018-05-16 11:54:47 2999

原创 SpringBoot Web项目分页查询

如果数据库中的数据有很多(假设有十几万条)的时候,将数据全部展示出来肯定不现实,那如何解决这个问题呢?使用分页解决这个问题。每次只展示一页的数据,比如:一页展示10条数据,如果还想看其他的数据,可以通过点击页码进行查询。

2024-09-18 17:50:21 930

原创 SpringBootWeb增删改查入门案例

为了快速入门一个SpringBootWeb项目,这里就将基础的增删改查的案例进行总结,作为对SpringBoot+Mybatis的基础用法的一个巩固。

2024-09-18 16:56:21 808

原创 Iceberg与SparkSQL查询操作整合

spark操作iceberg之前先要配置spark catalogs,详情参考Iceberg与Spark整合环境配置。Iceberg使用Apache Spark的DataSourceV2 API来实现数据源和catalog。

2024-09-10 16:20:27 275

原创 Iceberg与SparkSQL写操作整合

spark操作iceberg之前先要配置spark catalogs,详情参考Iceberg与Spark整合环境配置。有些操作需要在spark3中开启iceberg sql扩展。Iceberg使用Apache Spark的DataSourceV2 API来实现数据源和catalog。

2024-09-09 17:52:36 226

原创 SparkSQL FUNCTION相关操作

这篇博客中的FUNCTION只针对SQL接口(也就是用的是Hivesql接口中的自定义函数),不包括使用scala、java、python用spark代码中开发的函数。这样的函数我们可以直接在Sparksql cli模式或者写在sql脚本中直接用sparksql命令可以执行的函数。

2024-09-09 15:18:34 381

原创 SparkSQL SET和RESET

我们在用代码写spark程序的时候,如果要设置一些配置参数,可以通过:SparkConf如果我们在sparksql cli或者sparksql执行一些sql脚本的时候,我们要设置一些参数或取消参数就得用sparksql的set和unset命令。

2024-09-09 11:12:09 191

原创 Iceberg与SparkSQL整合DDL操作

使用SparkSql操作Iceberg表之前我们得先配置好catalog,配置方式参考[这篇博客]。

2024-09-06 17:20:46 824

原创 Iceberg与Spark整合环境配置

这部分内容中我们我们主要了解iceberg和spark整合时的各种参数配置。这里总结几个最常用的catalog相关参数:其实这个配置有两个对应值这个是最常用的,包含hive和hadoop两种catalog类型,而我们为了能继续使用历史hive表的数据,因此这里大部分都选择hive catalog。这种用的较少,将iceberg catalog添加到spark内置的catalog中。

2024-09-06 14:09:08 389

原创 iceberg存储结构详解

下图是Iceberg中表格式,s0、s1代表的是表Snapshot信息,每个表示当前操作的一个快照,每次commit都会生成一个快照Snapshot,每个Snapshot快照对应一个manifest list 元数据文件,每个manifest list 中包含多个Manifest元数据文件,manifest中记录了当前操作生成数据所对应的文件地址,也就是data file的地址。基于snapshot的管理方式,Iceberg能够获取表历史版本数据、对表增量读取操作,data files存储支持不同的文件格式

2024-09-05 18:15:00 195

原创 SparkSQL四种排序详解

和Hive一样,SparkSQL也有同样的四种排序:Sort By、Order By、Distribute By和Cluster By。本篇博客用最详细的案例对这四种排序进行详解,希望能够让读者在SparkSQL中使用排序的时候可以游刃有余。order by 是全局排序,可能性能会比较差;sort by分区内有序,往往配合distribute by来确定该分区都有那些数据;distribute by 确定了数据分发的规则,相同的分区字段对应的值会放在同一个分区内。

2024-09-05 13:13:58 337

原创 通俗易懂理解Hive四种排序

Hive的四种排序包括Sort By、Order By、Distribute By和Cluster By。有关这四种排序的区别,在大数据面试中可能会经常被问到,在我们很多人的实际应用中可能最常用的就是全局排序order by,因此对于其他几个排序理解并不准确,接下来我用简单的案例尽量描述清楚。order by 是全局排序,可能性能会比较差;sort by分区内有序,往往配合distribute by来确定该分区都有那些数据;

2024-09-05 10:17:12 1076

原创 通俗易懂理解Java泛型

参数化类型Java泛型是J2 SE1.5中引入的一个新特性,其本质是参数化类型,也就是说所操作的数据类型被指定为一个参数(type parameter)这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。

2024-09-04 13:48:10 1382

原创 通俗易懂理解Java枚举类

一组常量。比如一年的 4 个季节,一年的 12 个月份,一个星期的 7 天,方向有东南西北等。Java 枚举类使用 enum 关键字来定义,各个常量使用逗号 , 来分割。例如定义一个颜色的枚举类。enum Color这时候一定有人会说,常量直接用static final来定义来定义不就好了,花里胡哨的搞个额外的枚举类有什么意义?// TODO:编译器无法检查每个值的合理性也就是我这里的color我想写什么字符串都可以。

2024-09-04 10:29:55 1688

原创 Java System类使用教程

要复制的数组在source中传递,source中开始复制的索引在sourceStart中传递。将接收副本的数组在target中传递,在targetStart中传递复制开始的索引。Size是要复制的元素的数量。System类提供的功能包括标准输入、标准输出和错误输出流、访问外部定义的属性和环境变量、加载文件和库的方法、以及用于快速复制数组的一部分的实用程序方法。它继成了Object类。

2024-09-03 13:09:01 954

原创 iceberg简介

为了解决数据存储和计算引擎之间的适配的问题,Netflix 开发了 Iceberg,2018 年 11月 16 日进入 Apache 孵化器,2020 年 5 月 19 日从孵化器毕业,成为 Apache 的顶级项目。Iceberg 是一个面向海量数据分析场景的开放表格式(Table Format)。表格式(TableFormat)可以理解为元数据以及数据文件的一种组织方式,处于计算框架(Flink,Spark…)之下,数据文件之上。高性能格式(High-Performance Format)

2024-08-29 10:26:07 302

原创 Flink迟到数据处理方式详解

所以总结起来,Flink 处理迟到数据,对于结果的正确性有三重保障:水位线的延迟,窗口允许迟到数据,以及将迟到数据放入窗口侧输出流。

2024-08-28 14:58:45 96

原创 Flink窗口API使用教程

在代码实现上,我们需要先对 DataStream 调用.keyBy()进行按键分区,然后再调用.window()定义窗口。

2024-08-28 14:35:50 245

原创 深入理解Flink窗口

在 Flink 中,"窗口"是一种重要的概念,它允许你将无限的数据流分割成有意义的小批量数据来进行聚合操作(比如计数、求平均值等)。Flink 支持几种不同类型的窗口,下面我将通过一些具体的例子来解释这四种主要的窗口类型:滚动窗口、滑动窗口、会话窗口以及全局窗口。滚动窗口 (Tumbling Window)定义:滚动窗口是固定大小并且不会重叠的窗口。一旦数据到达窗口的结束时间点,窗口就会关闭,然后计算结果。案例:假设你正在运行一个网站,想要每分钟统计一次用户的点击量。

2024-08-28 11:07:44 439

原创 Spark SQL Hints:优化查询性能的利器

在大数据处理领域,Apache Spark 是一个非常流行的框架,它提供了高性能的数据处理能力。Spark SQL 是 Spark 中的一个模块,用于处理结构化和半结构化数据,允许用户使用 SQL 查询数据,同时也提供了 DataFrame 和 DataSet API 进行编程访问。为了帮助开发者更有效地优化查询性能,Spark SQL 引入了查询提示(Hints),这是一种在 SQL 查询中嵌入优化指令的方法。

2024-08-27 14:23:44 903

原创 SparkSQL缓存的用法

CACHE TABLE(缓存表)UNCACHE TABLE(清除指定缓存表)CLEAR CACHE(清除所有缓存表)下面我们详细讲解这些语句的使用方法。

2024-08-27 13:54:07 705

原创 SparkSQL DML语句详解

数据操作语句用于添加、更改或删除数据。LOAD。

2024-08-27 13:10:33 1768

SparkMLlib机器学习(黄美玲和王晓华版两本)

SparkMLlib机器学习黄美玲版和SparkMLlib机器学习实战王晓华版,都带目录,很方便阅读,希望能帮助到大家

2018-10-17

CDH-5.13.1安装文档

亲测CDH-5.13.1,希望能够帮助想要使用CDH的同学,文档中有不懂的可以留言

2018-09-03

高等数学(同济大学出版)上下册(高清,带目录)

学习人工智能、大数据高数是必备的专业技能,同济大学出版的高等数学一直是很多高校指定的专用教材

2018-04-18

Spark快速大数据分析和深入解析Spark内核架构设计与实现原理

有这两本书,的确可以把spark技术研究透彻,真心感谢这两位作者

2018-03-28

java最经典的笔记

这是我见过java总结的很屌的培训机构的老师,感谢阳哥笔记,让人对java基础的知识有了更加深刻的理解

2018-02-08

搜题功能,图片文字识别技术

模仿作业帮、猿题库等含有搜题功能的app,自定义相机,图片识别技术的实现,超级简单

2018-01-03

Dialog的正确使用方式

学会如何正确使用Dialog,以及更规范的Dialog模板,和创建的方式。

2017-12-27

空空如也

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

TA关注的人

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