
spark
数据的星辰大海
简单地做自己,踏实的做事情
展开
-
spark 数据转换为dataFrame的两种方式
1. 隐式转换toDF1)使用case-classcase class Person(name: String, age: Int)引入隐式转换的包import sqlContext.implicits._创建case-class的Rdd val rdd: RDD[Person] = sc.parallelize(Array( Person("fanghailiang", 29), Person("sunyu", 28), Person("jiaol转载 2020-12-25 10:43:54 · 5037 阅读 · 0 评论 -
Spark资源参数优化
一.指定spark executor 数量的公式executor 数量 = spark.cores.max/spark.executor.coresspark.cores.max 是指你的spark程序需要的总核数spark.executor.cores 是指每个executor需要的核数二.指定并行的task数量spark.default.parallelism参数说明:该参数用于设置每个stage的默认task数量。这个参数极为重要,如果不设置可能会直接影响你的Spark作业性能。参数调优原创 2020-12-24 21:58:51 · 183 阅读 · 0 评论 -
Spark的combineByKey详解
spark的combineByKey算子还是相对比较难理解的,所以在记录下分析理解的过程,以便回顾。一、spark的combineByKey源码 /** * Simplified version of combineByKeyWithClassTag that hash-partitions the resulting RDD using the * existing partitioner/parallelism level. This method is here for backwa原创 2020-08-12 10:13:02 · 1111 阅读 · 1 评论 -
spark-submit提交(转)
文章出处:https://blog.youkuaiyun.com/chenjieit619/article/details/53421080如有不妥之处,欢迎随时留言沟通交流,谢谢~在开发完Spark作业之后,就该为作业配置合适的资源了。Spark的资源参数,基本都可以在spark-submit命令中作为参数设置。很多Spark初学者,通常不知道该设置哪些必要的参数,以及如何设置这些参数,最后就只能胡乱设...转载 2020-04-24 10:08:00 · 893 阅读 · 0 评论 -
spark的reduceByKey
在进行Spark开发算法时,最有用的一个函数就是reduceByKey。reduceByKey的作用对像是(key, value)形式的rdd,而reduce有减少、压缩之意,reduceByKey的作用就是对相同key的数据进行处理,最终每个key只保留一条记录。保留一条记录通常有两种结果。一种是只保留我们希望的信息,比如每个key出现的次数。第二种是把value聚合在一起形成列表,这样后...转载 2020-04-18 10:33:29 · 6771 阅读 · 0 评论 -
idea中通过spark访问hive
IDEA中使用Spark SQL 连接Hive折腾了两个小时,好久没有弄了,记录一下一、复制hive-site.xml复制hive-site.xml到idea工程中的resource目录下二、在windows中安装hadoop并配置环境变量1、解压hadoop2、修改hadoop etc/hadoop中的hadoop-env.cmd、mapred-env.sh、yarn-env.sh...原创 2020-02-20 16:16:41 · 896 阅读 · 0 评论 -
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/spark/SparkConf
敲黑板 ,引入的依赖 一定要 “compile” 或则 “runtime”,否则spark conf 无法初始化,这辈子也运行不了,千万不要是 “provided". <dependency> <groupId>org.apache.spark</groupId> <artifactId>...原创 2020-02-20 14:57:10 · 731 阅读 · 0 评论 -
spark中map与mapPartitions区别
在spark中,map与mapPartitions两个函数都是比较常用,这里使用代码来解释一下两者区别import org.apache.spark.{SparkConf, SparkContext}import scala.collection.mutable.ArrayBufferobject MapAndPartitions { def main(args: Array[Str...原创 2019-12-10 20:00:32 · 176 阅读 · 0 评论 -
sparkstreaming读取kafka的两种方式
spark streaming提供了两种获取方式,一种是同storm一样,实时读取缓存到内存中;另一种是定时批量读取。这两种方式分别是:Receiver-baseDirect一 、Receiver-base:Spark官方最先提供了基于Receiver的Kafka数据消费模式。不过这种方式是先把数据从kafka中读取出来,然后缓存在内存,再定时处理。如果这时候集群退出,而偏移量又没处理好...原创 2019-12-10 19:33:00 · 1838 阅读 · 0 评论 -
Spark SQL数据倾斜解决方案
由于Spark都是基于RDD的特性,所以可以用纯RDD的方法,实现和Spark SQL一模一样的功能。之前在Spark Core中的数据倾斜的七种解决方案,全部都可以直接套用在Spark SQL上。Spark SQL的数据倾斜解决方案:聚合源数据:Spark Core和Spark SQL没有任何区别1、过滤导致倾斜的key:在sql中用where条件2、提高shuffle并行度:grou...原创 2019-10-14 17:58:05 · 704 阅读 · 0 评论 -
Spark(五)Spark任务提交方式和执行流程
https://www.cnblogs.com/frankdeng/p/9301485.html转载 2019-06-24 18:14:00 · 192 阅读 · 0 评论 -
spark优化之数据结构
1、优先使用数组以及字符串,而不是集合类。也就是说,优先用array,而不是ArrayList、LinkedList、HashMap等集合。比如,有个List<Integer> list = new ArrayList<Integer>(),将其替换为int[] arr = new int[]。这样的话,array既比List少了额外信息的存储开销,还能使用原始数...原创 2019-05-05 21:01:05 · 162 阅读 · 0 评论 -
spark对多次使用的RDD进行持久化或Checkpoint
如果程序中,对某一个RDD,基于它进行了多次transformation或者action操作。那么就非常有必要对其进行持久化操作,以避免对一个RDD反复进行计算。此外,如果要保证在RDD的持久化数据可能丢失的情况下,还要保证高性能,那么可以对RDD进行Checkpoint操作。对RDD持久化序列化后,RDD的每个partition的数据,都是序列化为一个巨大的字节数组。这样,对...转载 2019-05-05 21:01:54 · 558 阅读 · 0 评论 -
spark设置合理的并行度
实际上Spark集群的资源并不一定会被充分利用到,所以要尽量设置合理的并行度,来充分地利用集群的资源。才能充分提高Spark应用程序的性能。Spark会自动设置以文件作为输入源的RDD的并行度,依据其大小,比如HDFS,就会给每一个block创建一个partition,也依据这个设置并行度。对于reduceByKey等会发生shuffle的操作,就使用并行度最大的父RDD的并行度即可。...原创 2019-05-05 21:05:03 · 965 阅读 · 0 评论 -
spark广播变量
广播变量的好处:如果你的算子函数中,使用到了特别大的数据,那么,这个时候,推荐将该数据进行广播。这样的话,就不至于将一个大数据拷贝到每一个task上去。而是给每个节点拷贝一份,然后节点上的task共享该数据。这样的话,就可以减少大数据在节点上的内存消耗。并且可以减少数据到节点的网络传输消耗。以下是官网翻译:广播变量允许程序员在每台机器上保留一个只读变量,而不是随副本一起发送它的副本。例...原创 2019-05-05 21:05:37 · 654 阅读 · 0 评论 -
spark数据本地化
数据本地化对于Spark Job性能有着巨大的影响。如果数据以及要计算它的代码是在一起的,那么性能当然会非常高。但是,如果数据和计算它的代码是分开的,那么其中之一必须到另外一方的机器上。通常来说,移动代码到其他节点,会比移动数据到代码所在的节点上去,速度要快得多,因为代码比较小。Spark也正是基于这个数据本地化的原则来构建task调度算法的。数据本地化,指的是,数据离计算它的代码有多近...转载 2019-05-05 21:06:09 · 249 阅读 · 0 评论 -
spark合理的使用reducebykey和groupbykey
val counts = pairs.reduceByKey(_ + _)val counts = pairs.groupByKey().map(wordCounts => (wordCounts._1, wordCounts._2.sum))如果能用reduceByKey,那就用reduceByKey,因为它会在map端,先进行本地combine,可以大大减少要传输到r...原创 2019-05-05 21:06:39 · 357 阅读 · 0 评论 -
spark的shuffle优化
什么是map端内存缓冲区呢?默认情况下,每个map端的task 输出的一些中间结果在写入磁盘之前,会先被写入到一个临时的内存缓冲区,这个缓冲区的默认大小为32kb,当内存缓冲区满溢之后,才会将产生的中间结果spill到磁盘上。reduce端内存占比又是什么呢?reduce端的task在拉取到数据之后,会用一个hashmap的数据结构对各个key对应的value进行汇聚操作。在进行汇聚操作的时候...转载 2019-05-05 21:07:16 · 198 阅读 · 0 评论 -
内存计算框架之spark--sparkcore
原创 2019-06-23 23:34:44 · 461 阅读 · 0 评论 -
spark注册类序列化KryoSerializer
注册类序列化KryoSerializer操作步骤 Spark程序运行时,在 shuffle 和 RDD Cache 等过程中,会有大量的数据需要序列化,默认使用 JavaSerializer,通过配置让 KryoSerializer 作为数据序列化器来提升序列化性能。在开发应用程序时,添加如下代码来使用 KryoSerializer 作为数据序列化器。在spark中默认的Ja...原创 2019-05-05 21:00:01 · 3628 阅读 · 0 评论