
spark
文章平均质量分 76
小猫不会去楼兰捉虫
这个作者很懒,什么都没留下…
展开
-
Spark12: SparkSQL入门
Spark SQL和我们之前讲Hive的时候说的hive on spark是不一样的。hive on spark是表示把底层的mapreduce引擎替换为spark引擎。而Spark SQL是Spark自己实现的一套SQL处理引擎。Spark SQL是Spark中的一个模块,主要用于进行结构化数据的处理。它提供的最核心的编程抽象,就是DataFrame。它其实和关系型数据库中的表非常类似,RDD可以认为是表中的数据,Schema是表结构信息。原创 2023-02-18 18:51:29 · 568 阅读 · 0 评论 -
Spark11: 算子优化
3)不过一般情况下,mapPartitions 的性能更高;初始化操作、数据库链接等操作适合使用 mapPartitions操作,这是因为:假设需要将RDD中的每个元素写入数据库中,这时候就应该把创建数据库链接的操作放置在mapPartitions 中,创建数据库链接这个操作本身就是个比较耗时的,如果该操作放在 map 中执行,将会频繁执行,比较耗时且影响数据库的稳定性。针对个别RDD,如果感觉分区数量不合适,想要调整,可以通过repartition进行调整,分区调整了之后,对应的并行度也就可以调整了。原创 2023-02-16 23:47:11 · 222 阅读 · 0 评论 -
Spark10: 性能优化(Kyro序列化、持久化,JVM调优、并行度、数据本地化)
数据本地化,指的是,数据离计算它的代码有多近。数据本地化对于Spark Job性能有着巨大的影响。如果数据以及要计算它的代码是在一起的,那么性能当然会非常高。但是,如果数据和计算它的代码是分开的,那么其中之一必须到另外一方的机器上。通常来说,移动代码到其它节点,会比移动数据到代码所在的节点,速度要得多,因为代码比较小。Spark也正是基于这个数据本地化的原则来构建task调度算法的。原创 2023-02-14 22:44:42 · 823 阅读 · 0 评论 -
Spark09: Spark之checkpoint
checkpoint,是Spark提供的一个比较高级的功能。有时候,我们的Spark任务,比较复杂,从初始化RDD开始,到最后整个任务完成,有比较多的步骤,比如超过10个transformation算子。而且,整个任务运行的时间也特别长,比如通常要运行1~2个小时。在这种情况下,就比较适合使用checkpoint功能了。因为对于特别复杂的Spark任务,有很高的风险会出现某个要反复使用的RDD因为节点的故障导致丢失,虽然之前持久化过,但是还是导致数据丢失了。原创 2023-02-12 16:28:15 · 1421 阅读 · 1 评论 -
Spark08: Spark Job的三种提交模式
这种方式主要用于测试,查看日志方便一些,部分日志会直接打印到控制台上面,因为driver进程运行在本地客户端,就是提交Spark任务的那个客户端机器,driver负责调度job,会与yarn集群产生大量的通信,一般情况下Spark客户端机器和Hadoop集群的机器是无法内网通信,只能通过外网,这样在大量通信的情况下会影响通信效率,并且当我们执行一些action操作的时候数据也会返回给driver端,driver端机器的配置一般都不高,可能会导致内存溢出等问题。基于Spark自己的standalone集群。原创 2023-02-01 23:01:46 · 1118 阅读 · 0 评论 -
Spark07: 宽窄依赖、Stage的划分
也就是说,每一个父RDD的partition中的数据都可能会传输一部分到下一个RDD的每个partition中。一个RDD,对它的父RDD只有简单的一对一的关系,也就是说,RDD的每个partition仅仅依赖于父RDD中的一个partition,父RDD和子RDD的partition之间的对应关系,是一对一的。(2)再看下面,RDD G到RDD F,产生了宽依赖,所以RDD F属于一个Stage,因为RDD F和 RDD C、D、E 这几个RDD没有产生宽依赖,都是窄依赖,所以他们属于一个Stage。原创 2023-02-01 22:55:28 · 1223 阅读 · 0 评论 -
Spark06: 共享变量(广播变量、累加变量)
Spark提供的Accumulator,主要用于多个节点对一个变量进行共享性的操作。正常情况下在Spark的任务中,由于一个算子可能会产生多个task并行执行,所以在这个算子内部执行的聚合计算都是局部的,想要实现多个task进行全局聚合计算,此时需要使用到Accumulator这个共享的累加变量。大家可以想象一个极端情况,如果map算子有10个task,恰好这10个task还都在一个worker节点上,那么这个时候,map算子使用的外部变量就会在这个worker节点上保存10份,这样就很占用内存了。原创 2023-01-08 22:34:22 · 561 阅读 · 0 评论 -
Spark05: RDD持久化
当对RDD执行持久化操作时,每个节点都会将自己操作的RDD的partition数据持久化到内存中,并且在之后对该RDD的反复使用中,直接使用内存中缓存的partition数据。cache()是persist()的一种简化方式,cache()的底层就是调用的persist()的无参版本,也就是调用persist(MEMORY_ONLY),将数据持久化到内存中。(1)如果需要进行数据的快速失败恢复,那么就选择带后缀为_2的策略,进行数据的备份,这样在失败时,就不需要重新计算了。原创 2023-01-08 15:14:09 · 788 阅读 · 0 评论 -
Spark04: Transformation与Action开发
Transformation和Action这里的Transformation可以翻译为转换,表示是针对RDD中数据的转换操作,主要会针对已有的RDD创建一个新的RDD:常见的有map、flatMap、filter等等Action可以翻译为执行,表示是触发任务执行的操作,主要对RDD进行最后的操作,比如遍历、reduce、保存到文件等,并且还可以把结果返回给Driver程序不管是Transformation操作还是Action操作,一般会把它们称之为算子,例如:map算子,reduce算子。原创 2023-01-03 23:59:07 · 529 阅读 · 0 评论 -
Spark03: 单词统计
然后把spark-core依赖的作用域设置为provided,不需要把相关依赖打入jar包。再创建一个Scala object:WordCountScala。在scala目录下创建包com.sanqian.scala。在scala目录下创建包com.sanqian.java。需要java编译插件、Scala编译插件、打包插件。再创建一个Java类:WordCountJava。提交脚本: lwx_run.sh。原创 2023-01-02 20:30:52 · 441 阅读 · 0 评论 -
Spark02: Spark运行任务三种方式
spark-shell 实现了用户可以逐行输入代码,进行操作的功能。即可以不像Java一样,编写完所有代码,然后编译才能运行。spark-shell 支持。交互环境 和 python交互环境,在学习测试中可以使用spark-shell 进行API学习。spark-shell会自动创建sparkContext。注意:需要先启动spark standalone集群。比如:需要连接数据库,无法在本地调试的情况。会启动一个spark任务。原创 2023-01-02 19:35:50 · 913 阅读 · 0 评论 -
Spark01:Spark工作原理
RDD通常通过Hadoop上的文件,即HDFS文件进行创建,也可以通过程序中的集合来创建RDD是Spark提供的核心抽象,全称为Resillient Distributed Dataset,即弹性分布式数据集弹性:RDD数据默认情况下存放在内存中,但是在内存资源不足时,Spark也会自动将RDD数据写入磁盘分布式:RDD在抽象上来说是一种元素数据的集合,它是被分区的,每个分区分布在集群中的不同节点上,从而让RDD中的数据可以被并行操作。原创 2023-01-01 21:30:43 · 714 阅读 · 0 评论 -
pyspark 使用pandas_udf 报错:java.lang.IllegalArgumentException
pyspark使用pandas_udf时的一个坑2.运行报错:3. 解决办法报错原因:pyarrow 版本太高。解决办法:卸载pyarrow,安装低版本的pyarrow,这里安装0.12.0 程序就正常了。原创 2022-06-13 00:12:59 · 733 阅读 · 2 评论 -
windows上搭建pyspark开发环境
软件环境:5. winutils安装6. spark-2.3.2-bin-hadoop2.7安装好jdk后,配置环境变量参考:windows 安装jdk1.8_小猫不会去楼兰捉虫的博客-优快云博客官网下载scala, 将scala解压到指定目录,配置环境变量到path官网下载python,安装并配置环境变量官网下载版本>=spark对应hadoop版本,解压缩后配置HADOOP_HOME,bin目录追加到PATH5. winutils安装 下载地址:GitHub - steveloughran/winut原创 2022-06-12 20:34:21 · 752 阅读 · 0 评论