- 博客(11)
- 资源 (2)
- 收藏
- 关注
原创 SQL相关知识
dataframe 和 RDD 的比较case class Person(name:String,age:Int) val rdd = sc.textFile("hdfs://hadoop1:9000/examples/src/main/resources/people.txt").map(line => line.split(",")).map(p => Person(p(0),p(1).tri
2017-12-18 21:52:50 227
原创 RDD 转化为 DataFrame
DataFrame:读取和执行查询都会返回DataFrame,是一个由ROW 对象组成的RDD,附带包括每列数据类型的结构信息。ROW对象是支队基本数据类型的数组的封装。 ROW对象:表示DataFrame中的记录。本质是一个定长的字段数组。Spark将RDD转换成DataFrame的两种方式一、通过反射指定结构类型 通过反射的方式来推断RDD元素中的元数据。因为RDD本身一条数据本身是没有元数
2017-12-17 22:39:56 805
原创 Spark JVM调优 --GC
Spark发生垃圾回收的原理: GC:garbage collector 垃圾回收executor是JVM中的服务进程。Spark任务运行的时候就是不断的在executor中创建对象。若JVM存不下对象了,就会触发GC(把不需要的对象清除)。 若内存中数据量较大,则可能会很频繁的发生GC,而GC本身很耗费性能,对Spark作业性能影响很大。 同时若数据量很大,那么GC一个涉及的数据量
2017-12-14 14:42:41 1306
原创 资源调优
num-executors 说明:该参数用于设置Spark作业总共要用多少Executor进程来执行。Driver在向YARN集群管理器申请资源时,YARN集群管理器会尽可能按照设置来在集群的各个工作节点上启动相应数量的Executor进程。此参数非常重要,若不设置,默认只会启动少量的Executor进程,此时会非常慢 建议:每个Spark作业的运行一般设置50~100个左右的Executor进
2017-12-14 13:55:53 224
原创 Spark资源模型
Spark作业运行图: 1. 使用spark-submit提交一个spark应用,这个应用/作业会启动一个对应的driver进程,这个driver会根据提交模式的不同,可能在本地启动(client),也可能在集群中某个工作节点(cluster)上启动。 driver服务进程启动,会根据我们设置的参数,占用一定量的cpu和内存。 2. driver启动完成后做的第一件事是像集群的资源管理器
2017-12-13 23:19:08 343
原创 数据倾斜
数据倾斜发生时的现象: 1.绝大多数task执行得都非常快,但个别task执行的极慢。 2.原本能正常执行的Spark作业,某天突然爆出OOM(内存溢出)异常。观察异常栈,是我们写的业务代码造成的数据倾斜发生的原理 在进行shuffle的时候,必须将各个节点上海相同的Key拉取到某个节点上的一个task来进行处理,比如按照key进行聚合或者join操作。如果某个key对应的数据量特别大的话,会
2017-12-10 19:58:14 2316
原创 Spark的数据本地化
数据本地化对于Spark Job性能有着巨大影响。如果数据以及要计算它的代码是在一起的,那么性能必然会很高,若不在一起,则其中之一必须移动到另外一方机器上,通常移动代码的速度会快得多。Spark基于这个数据本地化的原则来构建task调度算法的。 数据本地化:数据离计算它的代码有多近。基于数据距离代码的距离,有几种数据本地化级别: 1. PROCESS_LOCAL :数据和计算它的代码在同一个JV
2017-12-10 16:23:03 1086
原创 Spark调优的策略
1. RDD的持久化 cahce() persist() checkpoint() 2. 避免创建重复的RDD 3.尽可能复用同一个RDD 类似于多个RDD的数据有重叠或者包含的情况,应该尽量复用一个RDD,以尽可能减少RDD的数量,从而减少算子计算次数 4.尽量避免使用shuffle类算子 spark运行过程中,最消耗性能的地方就是shuff
2017-12-09 16:43:35 3505
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人