rdd

Spark学习之路 (六)Spark Transformation和Action[转]

故事扮演 提交于 2020-01-26 18:07:46
Transformation算子 基本的初始化 (1)java static SparkConf conf = null; static JavaSparkContext sc = null; static { conf = new SparkConf(); conf.setMaster("local").setAppName("TestTransformation"); sc = new JavaSparkContext(conf); } (2)scala private val conf: SparkConf = new SparkConf().setAppName("TestTransformation").setMaster("local") private val sparkContext = new SparkContext(conf) map、flatMap、mapParations、mapPartitionsWithIndex map jdk7 map十分容易理解,他是将源JavaRDD的一个一个元素的传入call方法,并经过算法后一个一个的返回从而生成一个新的JavaRDD。 public static void map(){ //String[] names = {"张无忌","赵敏","周芷若"}; List<String> list = Arrays

Spark学习之路 (八)SparkCore的调优之开发调优[转]

别说谁变了你拦得住时间么 提交于 2020-01-26 18:06:36
前言 在大数据计算领域,Spark已经成为了越来越流行、越来越受欢迎的计算平台之一。Spark的功能涵盖了大数据领域的离线批处理、SQL类处理、流式/实时计算、机器学习、图计算等各种不同类型的计算操作,应用范围与前景非常广泛。在美团•大众点评,已经有很多同学在各种项目中尝试使用Spark。大多数同学(包括笔者在内),最初开始尝试使用Spark的原因很简单,主要就是为了让大数据计算作业的执行速度更快、性能更高。 然而,通过Spark开发出高性能的大数据计算作业,并不是那么简单的。如果没有对Spark作业进行合理的调优,Spark作业的执行速度可能会很慢,这样就完全体现不出Spark作为一种快速大数据计算引擎的优势来。因此,想要用好Spark,就必须对其进行合理的性能优化。 Spark的性能调优实际上是由很多部分组成的,不是调节几个参数就可以立竿见影提升作业性能的。我们需要根据不同的业务场景以及数据情况,对Spark作业进行综合性的分析,然后进行多个方面的调节和优化,才能获得最佳性能。 笔者根据之前的Spark作业开发经验以及实践积累,总结出了一套Spark作业的性能优化方案。整套方案主要分为开发调优、资源调优、数据倾斜调优、shuffle调优几个部分。开发调优和资源调优是所有Spark作业都需要注意和遵循的一些基本原则,是高性能Spark作业的基础;数据倾斜调优

Spark学习之路 (三)Spark之RDD[转]

前提是你 提交于 2020-01-26 17:59:47
RDD的概述 什么是RDD? RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合。RDD具有数据流模型的特点:自动容错、位置感知性调度和可伸缩性。RDD允许用户在执行多个查询时显式地将工作集缓存在内存中,后续的查询能够重用工作集,这极大地提升了查询速度。 RDD的属性 (1)一组分片(Partition),即数据集的基本组成单位。对于RDD来说,每个分片都会被一个计算任务处理,并决定并行计算的粒度。用户可以在创建RDD时指定RDD的分片个数,如果没有指定,那么就会采用默认值。默认值就是程序所分配到的CPU Core的数目。 (2)一个计算每个分区的函数。Spark中RDD的计算是以分片为单位的,每个RDD都会实现compute函数以达到这个目的。compute函数会对迭代器进行复合,不需要保存每次计算的结果。 (3)RDD之间的依赖关系。RDD的每次转换都会生成一个新的RDD,所以RDD之间就会形成类似于流水线一样的前后依赖关系。在部分分区数据丢失时,Spark可以通过这个依赖关系重新计算丢失的分区数据,而不是对RDD的所有分区进行重新计算。 (4)一个Partitioner,即RDD的分片函数。当前Spark中实现了两种类型的分片函数

Apache Spark

风流意气都作罢 提交于 2020-01-26 05:49:14
Apache Spark 一、概述 官方地址: http://spark.apache.org/ Lightning-fast unified analytics engine : 快如闪电的统一分析引擎 快如闪电: Spark基于内存式计算,分布式并行计算框架。不同于MapReduce框架,基于磁盘式计算,将Job粗粒度的分为MapTask、ReduceTask,并且必须通过网络进行数据交互。 Spark任务执行时,实际上会将一个复杂的科学计算划分一个个的Stage(阶段),每一个Stage都支持分布式的并行计算 Spark计算时,每一个Stage计算结果都可以进行缓存,可以非常容易的进行故障恢复和结果重用 统一: 集结了大数据处理的主流方案 批处理(RDD:代替MapReduce) 流处理(Streaming:代替Storm、Kafka Streaming) 机器学习(Machine Learing: 代替Mahout) 交互式查询(SQL:代替Hive) 图形计算(GraphX) 分析引擎:代替MapReduce 特点 速度: 相对于MapReduce的计算,效率极高。Spark将复杂的Job分解为若个Stage,每一个Stage都可以进行分布式并行计算,称为DAG(Directed Acyclic Graph)有向无环图,类似于Kafka Streaming

spark学习13(spark RDD)

雨燕双飞 提交于 2020-01-25 22:37:29
RDD及其特点 1)RDD(Resillient Distributed Dataset)弹性分布式数据集,是spark提供的核心抽象。它代表一个不可变、可分区、里面的元素可并行计算的集合 2)RDD在抽象上来说是一种元素集合,包含了数据。它是被分区的,分为多个分区,每个分区分布在集群中的不同节点上,从而让RDD中的数据可以被并行操作(分布式数据集) 3)RDD通常通过hadoop上的文件,即hdfs文件或者hive表来进行创建,有时也可以通过应用程序中的集合来创建。 4)RDD最重要的特性就是提供了容错性,可以自动从节点失败中恢复过来,即某节点上的RDD partition,因为节点故障,导致数据丢了,那么RDD会自动通过自己数据来源重新计算该partition,这一切对使用者是透明的 5)RDD的数据默认情况下存在内存中,但是在内存资源不足是,spark会自动将RDD数据写入磁盘(弹性) 注意:RDD的每个partition,在spark节点上存储时,默认都是放在内存中的,但是如果说内存放不下这么多数据,比如每个节点最多放5w数据,结果每个partition市10w数据,那么就会把partition中的部分数据写入磁盘,进行保存。而上述这一切,对于用户来说,都是完全透明的,也就是不用去管RDD的数据存放在内存还是磁盘,只要关注你针对RDD来进行计算和处理等操作即可

Apache Spark update a row in an RDD or Dataset based on another row

寵の児 提交于 2020-01-24 21:06:57
问题 I'm trying to figure how I can update some rows based on another another row. For example, I have some data like Id | useraname | ratings | city -------------------------------- 1, philip, 2.0, montreal, ... 2, john, 4.0, montreal, ... 3, charles, 2.0, texas, ... I want to update the users in the same city to the same groupId (either 1 or 2) Id | useraname | ratings | city -------------------------------- 1, philip, 2.0, montreal, ... 1, john, 4.0, montreal, ... 3, charles, 2.0, texas, ...

Apache Spark update a row in an RDD or Dataset based on another row

六眼飞鱼酱① 提交于 2020-01-24 21:06:26
问题 I'm trying to figure how I can update some rows based on another another row. For example, I have some data like Id | useraname | ratings | city -------------------------------- 1, philip, 2.0, montreal, ... 2, john, 4.0, montreal, ... 3, charles, 2.0, texas, ... I want to update the users in the same city to the same groupId (either 1 or 2) Id | useraname | ratings | city -------------------------------- 1, philip, 2.0, montreal, ... 1, john, 4.0, montreal, ... 3, charles, 2.0, texas, ...

Apache Spark update a row in an RDD or Dataset based on another row

冷暖自知 提交于 2020-01-24 21:06:21
问题 I'm trying to figure how I can update some rows based on another another row. For example, I have some data like Id | useraname | ratings | city -------------------------------- 1, philip, 2.0, montreal, ... 2, john, 4.0, montreal, ... 3, charles, 2.0, texas, ... I want to update the users in the same city to the same groupId (either 1 or 2) Id | useraname | ratings | city -------------------------------- 1, philip, 2.0, montreal, ... 1, john, 4.0, montreal, ... 3, charles, 2.0, texas, ...

【2020/1/24】寒假自学——学习进度报告5

╄→尐↘猪︶ㄣ 提交于 2020-01-24 20:14:25
  接下来要写4篇的进度报告,准备把RDD编程和SparkSQL放在这几天一起弄掉(没回老家的大年三十稍微有些无聊)。   这一篇我想先笼统一下各方面的知识,省的有不理解的地方。   首先是RDD。   作为一个分布式的数据构造,RDD对我来说方法是抽象的,而且一般来说面向我的都是函数式的编程操作,很难体会到RDD真正意义上的数据转换和行动操作,所以通过学习RDD的构造和运转方式可以更好地理解RDD在Spark中的作用。    RDD(Resilient Distributed Dataset) 叫着 弹性分布式数据集。    RDD的特点:   1. 是一个分区的 只读 记录的集合;   2. 一个具有 容错机制 的特殊集;   3. 只能通过在稳定的存储器或其他RDD上的确定性操作(转换)来创建;   4. 可以 分布 在集群的节点上,以 函数式操作 集合的方式,进行各种 并行操作。    另外从名称中得出另外的RDD特点——弹性。       1. 基于Lineage的高效容错(第n个节点出错,会从第n-1个节点恢复,血统容错);     2. Task如果失败会自动进行特定次数的重试(默认4次);     3. Stage如果失败会自动进行特定次数的重试(可以值运行计算失败的阶段),只计算失败的数据分片;     4. 数据调度弹性:DAG TASK 和资源管理无关;   

toDF does not compile though import sqlContext.implicits._ is used

与世无争的帅哥 提交于 2020-01-24 12:23:07
问题 I have some issue with compiling the Spark Scala code when I want to use toDF in order to pass RDD to DataFrame. I checked both Spark 2.0.0 and 1.6.2, and the problem is the same all the time. Below I provide my POM file and the piece of code: POM.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">