
Spark系列
文章平均质量分 83
汪巡
这个作者很懒,什么都没留下…
展开
-
Spark应用-常用功能汇总
读写 Excel使用的是 crealytics 的 spark-excel (优快云 的国内镜像仓库)解决 Excel 的读写问题,可以直接读取为 DataFrame ,常用的表头、读取 sheet 以及读取位置等参数都可以配置,写入的话支持写入到单个 Excel 文件而不是目录,常用的参数有写入表头、写入位置以及写入模式都参数配置,还支持同一个Excel文件多次写入。导入 Maven 依赖:<dependency> <groupId>com.crealytics<原创 2021-10-15 18:24:15 · 961 阅读 · 0 评论 -
Spark入门-累加器和广播变量
累加器Spark 中累加器用来解决一些特殊的需求。假设有一个需求,对 RDD 中的数据进行累加求和并返回,当然使用 reduce 可以很好地实现,但我们想尝试一下定义一个新的变量,依次遍历 RDD 对每个元素进行累加最后返回这个变量的值。val spark: SparkSession = SparkSession.builder().master("local[*]").getOrCreate()val sc: SparkContext = spark.sparkContextval rdd: R原创 2021-09-15 14:14:04 · 197 阅读 · 0 评论 -
Spark入门-UDAF之强类型和弱类型
在 Spark 处理数据的过程中,虽然 DataSet 下的算子不多,但已经可以处理大多数的数据需求,但仍有少数需求需要自定义函数。UDF(User Defined Functions) 是普通的不会产生 Shuffle 不会划分新的阶段的用户自定义函数,UDAF(User Defined Aggregator Functions) 则会打乱分区,用户自定义聚合函数。UDF因为 UDF 不需要打乱分区,直接对 RDD 每个分区中的数据进行处理并返回当前分区,所以可以直接注册 UDF 函数,甚至可以传入匿原创 2021-09-11 15:39:21 · 1004 阅读 · 0 评论 -
Spark入门-Cache、Persist and Checkpoint
Spark 在运算过程中提供了几个不同程度的持久化操作,通过将数据保存在内存中、磁盘中或者 HDFS 中来满足我们计算中的持久化需求。持久化(Persist、Cache)在实际开发中某些 RDD 的计算或转换可能会比较耗费时间,如果这些 RDD 后续还会频繁的被使用到,那么可以将这些 RDD 进行持久化/缓存,这样下次再使用到的时候就不用再重新计算了,提高了程序运行的效率。Spark 提供了 Persist 和 Cache 两个操作对 RDD 的运算结果进行持久化。先看一个例子,我们要对一个文件内的单原创 2021-09-11 15:30:36 · 149 阅读 · 0 评论 -
Spark入门-Dependencies、Lineage and Stage
Spark中比较重要的一块就是血缘关系和阶段划分,虽说并不能像累加器或者广播变量解决特定的需求,但对于理解Spark计算的任务执行调度有很大的帮助。Lineage(血缘关系)RDD 只支持粗粒度转换,即在大量记录上执行的单个操作。将创建 RDD 的一系列 Lineage (血统)记录下来,以便恢复丢失的分区。RDD 的 Lineage 会记录 RDD 的元数据信息和转换行为,当该 RDD 的部分分区数据丢失时,它可以根据这些信息来重新运算和恢复丢失的数据分区。RDD不保存数据,在没有缓存和检查点的情况原创 2021-09-11 15:23:31 · 347 阅读 · 0 评论 -
Spark入门-聚合算子详解
OverviewSpark中常用的算子加起来有几十个,其中针对key的聚合算子有五个,分别是groupBy、groupByKey、reduceByKey、aggregateByKey和flodByKey,有几个底层其实调用的都是一个方法,只不过传入的参数不一样产生了这几个算子,但我仍打算分开来详解每个算子的计算过程,加深理解。这几个聚合算子要解决的问题都是将所需操作的RDD中的key值相同的value值聚合在一起然后两两做计算也就是聚合最终得出一个结果,这里有三个点需要注意,一是两两聚合的初始值,是原创 2021-09-10 18:42:21 · 2344 阅读 · 1 评论 -
Spark入门-RDD、DataFrame and DataSet
RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是 Spark 中最基本的数据处理模型。代码中是一个抽象类,它代表一个弹性的、不可变、可分区、里面的元素可并行 计算的集合。而DataFrame和DataSet分别是Spark1.3版本和1.6版本开始支持的数据集类型。它们之间彼此依赖也可以互相转换,分别应用在不同的场景下。RDDRDD是Spark计算的基础数据集合,之后的DataFrame和DataSet底层也是封装了RDD,所以掌握RDD对是学习Spark原创 2021-09-10 18:30:31 · 407 阅读 · 0 评论