自定义博客皮肤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

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

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

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

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

2023-08-11 15:49:32 884

原创 SparkSQL性能优化终极篇

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

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

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

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

2023-06-10 13:12:36 978

原创 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 869

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

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

2023-05-05 10:53:06 1053

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

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

2023-05-04 18:26:37 2553

原创 repartition和partitionBy的区别

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

2023-05-04 15:26:38 764

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

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

2023-04-01 23:43:46 507

原创 Dataset关联性能优化

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

2023-03-31 23:45:01 180

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

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

2023-03-31 17:25:50 221

原创 collect大RDD性能优化

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

2023-03-31 15:14:18 320 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 3339 1

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

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

2021-01-05 18:26:40 9418 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 9212 2

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

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

2020-01-17 11:10:54 1325

原创 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 1901 2

原创 HDFS文件的压缩

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

2020-01-04 18:06:11 7548 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 67212 10

原创 MapReduce过程详解

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

2018-05-16 11:54:47 2737

原创 三种语言实现spark createDataFrame

我们经常需要在本地用数组写一些测试数据,进行spark逻辑测试,需要借助StructType和StructField以及数组生成DataFrame,最终进行测试,这里就简单的用Java、Scala、Python三种语言实现用数组的数据创建DataFrame。

2024-04-11 10:53:49 233

原创 return code 1 from org.apache.hadoop.hive.ql.ddl.DDLTask

注意:set命令是一次性的,而且无法在shell脚本中使用,否则直接报错:Error: Error while processing statement: Cannot modify hive.msck.path.validation at runtime. It is not in list of params that are allowed to be modified at runtime (state=42000,code=1)

2024-03-20 18:25:14 141

原创 Set cancelled by MemoryScratchSinkOperator

这个参数决定了单个查询在执行过程中可以使用的最大内存量。了,那么是谁的内存不够呢?显然不是spark,因为spark内存一般直接报OutOfMemory,那么就是starrocks内存不够,我们的代码中显然没有设置有关starrocks内存相关的参数。如果你将这个参数设置得足够大,确实可以为查询提供更大的内存空间,从而可能加速查询的执行,尤其是对于那些需要大量内存来执行复杂计算的查询。也就是说spark一次只能从starrocks表中读2GB的数据,超过这个值就会抛异常,于是把该值调大。

2024-03-13 19:32:04 197

原创 Container killed on request. Exit code is 143

大部分时候都是直接加大内存来解决,不要把太多精力放在这方面的调优。

2024-02-29 18:19:58 263

原创 spark sql官网优化指南

例如,当在表“t1”上使用BROADCAST提示时,即使表“t1”的统计大小超过了配置spark.sql.autoBroadcastJoinThreshold所建议的大小,Spark也会优先考虑使用“t1”作为构建侧的广播联接(取决于是否存在等联接键,可能是广播哈希联接或广播嵌套循环联接)。当联接的两边都指定了不同的联接策略提示时,Spark会优先考虑BROADCAST提示,其次是MERGE提示,然后是SHUFFLE_HASH提示,最后是SHUFFLE_REPLICATE_NL提示。

2024-02-18 11:09:16 544

原创 删除和清空Hive外部表数据

内部表数据存储的位置是hive.metastore.warehouse.dir(默认:/user/hive/warehouse),外部表数据的存储位置由自己制定(如果没有LOCATION,Hive将在HDFS上的/user/hive/warehouse文件夹下以外部表的表名创建一个文件夹,并将属于这个表的数据存放在这里);未被external修饰的是内部表(managed table),被external修饰的为外部表(external table);

2024-02-07 10:29:31 1065

原创 SparkJDBC读写数据库实战

注意:在Spark中,当使用JDBC数据源进行分区读取时,如果指定了一个数值型的分区列(例如整数或浮点数),那么必须为lowerBound和upperBound提供可以转换为long类型的值。如果我们要对某个字符串作为分区列,那么可以计算分区列的hash值对分区数取模(说白了就是找个能把字符串转为数字的方法),这样就能把字符串转为数字。spark当然不可能只能用一个task读数据库,这样如果数据库数据量大了,效率将会非常低,官方提供了一些参数,可以控制并发读取数据库任务的数量。想了解所有的参数,请参考。

2024-02-06 17:31:35 665

原创 SparkSql Join Types详解

我们都知道join是根据某些条件把两行数据关联起来,而且也熟悉常用的一些join type,如inner、left、right等等,但是有些人可能对semi、anti或者一些语法的缩写和全写搞的不是很清楚,这篇博客就用简单明了的案例把这些都讲明白。

2024-01-31 11:26:39 205

原创 spark读sqlserver出现的异常

Spark通过JDBC读取数据之前很早写过一篇博客,本以为所有通过jdbc读取的方式都一样,谁知道这次读sqlserver的时候竟然出现的很多异常,这里把异常的问题进行记录。

2024-01-08 14:58:50 1170

原创 通俗理解repartition和coalesce区别

然而,如果您正在进行剧烈的coalesce,例如numPartitions=1,这可能会导致您的计算在比您预想的更少的节点上进行(例如,在numPartitions=1的情况下是一个节点)。传入的可选分区合并器必须是可序列化的。这导致了窄依赖,例如,如果从1000个分区到100个分区,将不会出现shuffle,而是100个新分区中的每一个都将占用当前分区的10个。通过结果可以直观的看出,reparation把所有分区的数据都进行打散并重新分区,如果有几十亿条数据,可想而知执行起来非常耗时。

2023-11-07 13:58:11 231

原创 建表时如何合理选择字段类型

严谨型严格调研每个字段可能的大小,然后根据不同字段类型的限制,进行选择,这一类人在创建关系型数据表的时候是没有问题的。图自己省事型把所有字段都设置为String,这样他可以一股脑的把所有数据导入进来。这种人在用关系型数据库(如mysql)的时候,会被骂死,在大数据(如hive)中,可能ODS层这么搞,原则上是可行,毕竟还有建模的时候可以处理这些数据类型,但是建模的人也会抱怨。根据不同场景进行甄别型(1)大数据领域。

2023-11-06 13:46:17 238

原创 Flink往Starrocks写数据报错:too many filtered rows

这个其实比较郁闷,你抛出的异常是过滤出太多行,与not null有什么关系呢?但是,当你把not null去掉后,发现很多too many filtered rows的bug都能解决了。这个时候你把最新的数据导入,可能会报上面的错。正当你以为你根据字面意思就知道bug的本质的时候,你会发现有些场景,你日期写的完全没有问题依然会报上面的错(说明这个starrocks源码写的不严谨)。比如你写的是tinyint,但实际来的值超过这个范围,就会报错too many filtered rows(真有点扯淡啊)。

2023-11-06 10:40:36 1091

原创 error=‘Cannot allocate memory‘ (errno=12)

Linux中的top命令是一个动态显示过程,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。需要注意的是,在top命令运行的界面中,按下f键可以进入字段管理模式,可以选择要显示的列,并对列的顺序进行调整。NI:进程的nice值,表示进程的优先级调整值,数值越大,优先级越低。RES:进程使用的、未被换出的物理内存大小,单位为KB。PID:进程ID,每个进程都有一个唯一的ID。VIRT:进程使用的虚拟内存总量,单位为KB。PR:进程的优先级,数值越小,优先级越高。

2023-10-16 16:31:12 905

原创 java.lang.OutOfMemoryError: GC overhead limit exceeded

不同的管理模式下,这三部分占用的空间大小各不相同。Spark 对堆内内存的管理是一种逻辑上的”规划式”的管理,因为对象实例占用内存的申请和释放都由 JVM 完成,Spark 只能在申请后和释放前记录这些内存,我们来看其具体流程:

2023-10-09 09:23:03 538

原创 一文彻底搞清楚Spark Schema

Spark Schema定义了DataFrame的结构,可以通过对DataFrame对象调用printSchema()方法来获得该结构。Spark SQL提供了StructType和StructField类以编程方式指定架构。默认情况下,Spark从数据中推断schema,但有时我们可能需要定义自己的schema(列名和数据类型),尤其是在处理非结构化和半结构化数据时,本文通过示例解释了如何定义简单、嵌套和复杂的schema。

2023-09-28 11:08:51 403

原创 Ozone命令行接口详解

Ozone Shell是命令行与Ozone交互的主要界面,底层用的是Java。创建带有限额限制的Volume管理内部ACLs(访问控制列表)创建带有加密密钥的存储桶大部分操作除了Shell操作之外,还可以使用hadoop、s3等方式操作。在学习Ozone Shell命令的时候,可以借助help命令。

2023-08-10 16:19:40 994

原创 Spark Catalog详解

旁边的实习生说:我想要用spark代码中对hive库中的内部表和外部表进行删除(包括数据),咋感觉网上搜了一圈都找不到解决方案啊,spark这么鸡肋吗?我:你应该静下心来好好把spark基础知识进行全面学习。实习生:难道spark有这功能,而我没有学习过?咋弄啊?我:学习一下Spark Catalog。实习生:啥是Catalog啊?Spark Catalog是Spark SQL中的一个元数据管理组件,它提供了一个集中化的存储和查询表、视图和函数的位置。

2023-08-08 16:06:57 945

原创 Spark官方调优三部曲之三:其它优化思路

数据序列化内存调优这两个方向都进行调优后,如果想进一步继续优化你的程序,可以参考下面的思路。

2023-08-07 16:07:29 270

原创 Spark官方调优三部曲之二:内存调优

数据序列化内存调优上一篇博客已经详细介绍了数据序列化性能调优,本文主要针对内存调优进行讲解。说白了就是减少数据对内存的占用调整内存使用时有三个考虑因素:对象使用的内存量(您可能希望整个数据集都能容纳在内存中)、访问这些对象的成本以及垃圾收集的开销(如果您的对象周转率很高)。默认情况下,Java对象访问速度很快,但很容易消耗比其字段中的“原始”数据多2-5倍的空间。每个不同的Java对象都有一个“对象头”,大约有16个字节,包含指向其类的指针等信息。

2023-08-04 09:36:25 421

原创 Spark官方调优三部曲之一:数据序列化

在使用Spark进行数据开发的时候,避不开的一个问题就是性能调优。网上一搜一大堆所谓的调优策略很多作者自己都不知所云,导致读者看了后只会更加困惑。我们在研究一个技术的时候第一手资料永远都请参考官网,官网对性能优化不一定是最全甚至最优,但是可以解决大部分问题。数据序列化内存调优本文主要对数据序列化对性能影响进行全面性的总结。

2023-08-01 15:26:46 520

原创 pyspark提交py文件指南

它接受一个本地 Python 解释器的路径,可以是 Python 执行文件的绝对路径,也可以是一个可以在驱动程序中执行的 Python 可执行文件的名称。参数指定了在分布式集群的每个执行器上使用的 Python 解释器路径。这个参数通常用于指定Python解释器的路径,以确保分布式运行时使用特定版本的Python和相关的库。然而,由于 Python 的内存管理机制的限制,以及 PySpark 中的一些兼容性问题,当使用 PySpark 编程时,可能需要单独配置 Executor 的内存使用情况,即使用。

2023-07-31 15:48:54 650

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关注的人

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