scala雾中风景(2): 小括号与花括号 2条回复 下面的问题,表面上看是小括号与花括号的问题。 // map方法这样写不能编译通过 scala> List(2).map( case 2 => "OK" ) // 换做花括号就可以了 scala> List(2).map{ case 2 => "OK" } 不了解原因的话,觉得很诡异。分析一下,首先,map方法接受一个函数,这个函数将List中的元素映射为其他类型。 实际上case 2 => "OK" 不是一段lambda表…

2021年9月15日 0条评论 30点热度 阅读全文

概要 有时在开发过程中,会遇到需要在算子函数中使用外部变量的场景(尤其是大变量,比如100M以上的大集合),那么此时就应该使用Spark的广播(Broadcast)功能来提升性能。 在算子函数中使用到外部变量时,默认情况下,Spark会将该变量复制多个副本,通过网络传输到task中,此时每个task都有一个变量副本。如果变量本身比较大的话(比如100M,甚至1G),那么大量的变量副本在网络中传输的性能开销,以及在各个节点的Executor中占用过多内存导致的频繁GC,都会极大地影响性能。 因此对于上述情况,如果使用…

2021年9月11日 0条评论 21点热度 阅读全文

1.当在算子内使用到Driver端的一个变量的时候,这个变量封装到Task中,变为一个变量副本,发送到Executor中执行 2.由于task 的数量一般大于executor 的数量,会产生很多的变量副本,会降低任务执行的速度 3.使用广播变量的步骤 在 Driver端定义一个广播变量 在算子中如果使用到广播变量,会先向executor 中索取 如果executor中没有这个广播变量,executor回去Driver端获取广播变量 后续的 Task 可以直接使用 使用广播变量后 广播变量的 副本数 M<= e…

2021年7月24日 0条评论 29点热度 阅读全文

Spark性能调优之——在实际项目中广播大变量 为什么要用广播变量? 一、一个Spark Application Driver进程 其实就是我们写的Spark作业,打成jar运行起来的主进程。 比如一个1M的map(随机抽取的map) ,创建1000个副本,网络传输!分到1000个机器上,则占用了1G内存。 不必要的网络消耗,和内存消耗。 二、会出现的恶劣情况: 如果你是从哪个表里面读取了一些维度数据,比方说,所有商品的品类的信息,在某个算子函数中使用到100M。 1000个task 。100G的数据,要进行网络传…

2021年7月9日 0条评论 23点热度 阅读全文

     take和 collect操作类似,都是从远程集群上获取元素,只是collect操作获取的所有数据,而take操作是获取前n个元素 直接上代码: public static void myTake(){         SparkConf conf=new SparkConf()         .setMaster("local")  …

2021年7月7日 0条评论 32点热度 阅读全文

一、使用广播变量的好处 1、Driver每次分发任务的时候会把task和计算逻辑的变量发送给Executor。不使用广播变量,在每个Executor中有多少个task就有多少个Driver端变量副本。这样会导致消耗大量的内存导致严重的后果。 2、使用广播变量的好处,不需要每个task带上一份变量副本,而是变成每个节点的executor才一份副本。这样的话, 就可以让变量产生的副本大大减少; 二、广播变量的原理 广播变量,初始的时候,就在Drvier上有一份副本。task在运行的时候,想要使用广播变量中的数据,此时首…

2021年5月17日 0条评论 24点热度 阅读全文

在eclipse中查看内存溢出的案例: package main; import java.util.ArrayList; import java.util.List; /** * @author 刘卫卫 * 2018年9月12日下午3:22:49 */ public class HeapOOM { public static void main(String[] args) { List<String> list = new ArrayList<>(); while(true) { lis…

2021年5月1日 0条评论 82点热度 阅读全文

限于机器个数限制,本次搭建3个节点的集群,其中包含1个master节点(Hdfs namenode and yarn resourceManger)和三个(包括Master)slave节点(hdfs datanode 和Yarn nodeManger) 本次搭建,启动了keberos安全验证 版本 sottware version jdk jdk11 hadoop hadoop-3.2.2.tar.gz spark spark-3.1.1-bin-hadoop3.2.tgz ubuntu Ubuntu18.04 准…

2021年4月22日 0条评论 82点热度 阅读全文

简介Spark 1.Spark概述 1.1什么是Spark? 2.Spark的模块 3.Spark的特点 2.Spark运行模式 2.1 单机模式 2.2 集群模式 3.入门案例 3.1 Word Count 3.2 集群角色 3.2.1 Master和Worker 3.2.2 Driver和Worker 1.Spark概述 1.1什么是Spark? 进入官网,看简介:http://spark.apache.org/ Apache Spark™ is a unified analytics engine for =…

2021年3月26日 0条评论 57点热度 阅读全文

The Apache Hadoop project devolops open-source software for reliable, scalale, distributed computing. 可靠、大规模、分布式计算和开源! 要想学习Spark必定是绕不过Hadoop的,MapReduce和HDFS构成Hadoop的主要内容,MapReduce用来处理(processing),HDFS用来存储(storage)。 Hadoop要求数据应均匀分布在各个机器上,快速写入磁盘(步步为营)——而这就导致了Had…

2021年3月25日 0条评论 63点热度 阅读全文