spark
文章平均质量分 51
hunter95671
这个作者很懒,什么都没留下…
展开
-
数据倾斜及一些解决方法
一、数据倾斜原理做大数据开发,很有可能会遇到数据倾斜的问题,要想解决数据倾斜,首先要理解什么是数据倾斜,以及产生数据倾斜的原因。数据倾斜主要是指:主要就是数据在每个节点上的分配不均,导致个别节点处理速度很慢,使得程序迟迟不能运行结束。主要表现为:在mapreduce程序执行时,reduce节点大部分执行完毕,但是有一个或者几个reduce节点运行很慢,导致整个程序的处理时间很长,这是因为某一个key中的的条数比其他key要多很多,这条key所在的reduce节点所处理的数据量比其他节点就大很多,从而导致原创 2021-10-01 13:13:04 · 4900 阅读 · 0 评论 -
Spark两种持久化及其区别
一、RDD Cache 缓存RDD 通过 Cache 或者 Persist 方法将前面的计算结果缓存,默认情况下会把数据以缓存在 JVM 的堆内存中。但是并不是这两个方法被调用时立即缓存,而是触发后面的 action 算子时,该 RDD 将会被缓存在计算节点的内存中,并供后面重用。示例:// 数据缓存wordToOneRdd.cache()// 可以更改存储级别mapRdd.persist(StorageLevel.MEMORY_AND_DISK_2)二、RDD CheckPoint 检查点原创 2021-09-25 17:17:31 · 221 阅读 · 0 评论 -
Spark中RDD的依赖关系
一、RDD血缘关系RDD 只支持粗粒度转换,即在大量记录上执行的单个操作,在RDD上的每次操作会生成一个新的RDD。将创建 RDD 的一系列 Lineage(血统)记录下来,以便恢复丢失的分区。RDD 的 Lineage 会记录 RDD 的元数据信息和转换行为,当该 RDD 的部分分区数据丢失时,它可以根据这些信息来重新运算和恢复丢失的数据分区。二、RDD 依赖关系所谓的依赖关系,其实就是两个相邻 RDD 之间的关系。三、RDD 的宽依赖与窄依赖宽依赖表示同一个父(上游)RDD 的 Partiti原创 2021-09-20 09:03:30 · 723 阅读 · 0 评论 -
Spark算子groupByKey和reduceByKey区别
从 shuffle 的角度:reduceByKey 和 groupByKey 都存在shuffle的操作,但reduceByKey可以在 shuffle 前对分区内相同 key 的数据进行预聚合(combine)功能,这样会减少落盘的数据量,而groupByKey只是进行分组,不存在数据量减少的问题,reduceByKey性能比较高。从功能的角度:reduceByKey 包含分组和聚合的功能。而GroupByKey 只能分组,不能聚合,所以在分组聚合的场合下,推荐使用reduceByKey,如果仅仅是原创 2021-09-11 13:18:47 · 211 阅读 · 0 评论 -
Spark四种聚合算子的区别
reduceByKey: 相同 key 的第一个数据不进行任何计算,分区内和分区间计算规则相同foldByKey: 相同 key 的第一个数据和初始值进行分区内计算,分区内和分区间计算规则相同aggregateByKey:相同 key 的第一个数据和初始值进行分区内计算,分区内和分区间计算规则可以不相同combineByKey:当计算时,发现数据结构不满足要求时,可以让第一个数据转换结构。分区内和分区间计算规则不相同。案例:def main(args: Array[String]): Unit =原创 2021-09-07 11:29:15 · 387 阅读 · 0 评论 -
Spark RDD转换算子-Key-Value类型总结(2)
一、combineByKey最通用的对 key-value 型 rdd 进行聚集操作的聚集函数(aggregation function)。类似于aggregate(),combineByKey()允许用户返回值的类型与输入不一致。combineByKey:需要三个参数第一个参数表示:将相同Key的第一个数据进行结构转换,实现操作,如:v=>(v,1)第二个参数表示:分区内的计算规则第三个参数表示:分区间的计算规则例子:def main(args: Array[String]): Uni原创 2021-09-04 11:27:56 · 301 阅读 · 0 评论 -
Spark RDD转换算子-Key-Value类型总结(1)
一、partitionBy算子将数据按照指定 Partitioner 重新进行分区。Spark 默认的分区器是 HashPartitioner例子: def main(args: Array[String]): Unit = { val sparkConf = new SparkConf().setMaster("local[*]").setAppName("Operator") val sc = new SparkContext(sparkConf) val rdd =原创 2021-08-31 12:10:35 · 584 阅读 · 0 评论 -
Spark RDD转换算子-双Value类型总结
一、intersection对源 RDD 和参数 RDD 求交集后返回一个新的 RDD交集intersection要求两个数据源数据类型保持一致例子:def main(args: Array[String]): Unit = { val sparkConf = new SparkConf().setMaster("local[*]").setAppName("Operator") val sc = new SparkContext(sparkConf) val rdd1原创 2021-08-29 18:10:59 · 229 阅读 · 0 评论 -
Spark RDD转换算子-Value类型总结(2)
一、groupBy将数据根据指定的规则进行分组, 分区默认不变,但是数据会被打乱重新组合,我们将这样的操作称之为 shuffle。极限情况下,数据可能被分在同一个分区中,一个组的数据在一个分区中,但是并不是说一个分区中只有一个组。例子:将奇数偶数分为两组def main(args: Array[String]): Unit = { val sparkConf = new SparkConf().setMaster("local[*]").setAppName("Operator")原创 2021-08-26 21:51:36 · 161 阅读 · 0 评论 -
Spark RDD转换算子-Value类型总结(1)
一、map算子将处理的数据源的数据逐条进行映射转换,这里的转换可以是类型的转换,也可以是值的转换。map的参数为一个函数。在map转换后,分区是不变的。例子:将每个分区的数据都乘以2def main(args: Array[String]): Unit = { val sparkConf = new SparkConf().setMaster("local[*]").setAppName("Operator") val sc = new SparkContext(sparkConf)原创 2021-08-22 16:09:40 · 328 阅读 · 0 评论 -
Windows系统下启动spark出错问题解决方法
一、报错异常问题一:在执行spark-shell时报错,提示java路径问题问题二:执行spark/bin目录下的spark-shell.cmd闪退二、解决方法首先要保证spark路径上没有中文和空格。遇到问题一在执行spark-shell时报错,提示java路径问题时,先确认JAVA_HOME的路径中是否有中文与空格,将环境变量修改正确重试即可。遇到问题二在执行spark/bin目录下的spark-shell.cmd后闪退,可以尝试使用管理员身份运行启动成功!...原创 2021-08-19 11:28:09 · 3257 阅读 · 2 评论