spark

Spark中的RDD和DataFrame

╄→尐↘猪︶ㄣ 提交于 2020-02-08 18:13:14
什么是DataFrame 在Spark中,DataFrame是一种以RDD为基础的分布式数据集,类似于传统数据库中的二维表格。 RDD和DataFrame的区别 DataFrame与RDD的主要区别在于,DataFrame带有schema元信息,即DataFrame所表示的二维表数据集的每一列都带有名称和类型。使得Spark SQL得以洞察更多的结构信息,从而对藏于DataFrame背后的数据源以及作用于DataFrame之上的变换进行了针对性的优化,最终达到大幅提升运行时效率的目标。 RDD,由于无从得知所存数据元素的具体内部结构,Spark Core只能在stage层面进行简单、通用的流水线优化。 DataFrame底层是以RDD为基础的分布式数据集,和RDD的主要区别的是:RDD中没有schema信息,而DataFrame中数据每一行都包含schema DataFrame = RDD[Row] + shcema RDD转DataFrame原因及方式 可以将RDD转成DataFrame之后,借用sparksql和sql以及HQL语句快速方便的使用sql语句统计和查询,比如说分组排名(row_number() over()) 分析函数和窗口函数去实现占比分析。 将RDD转化为DataFrame有两种方式: 方式一:通过反射推断schema 要求:RDD的元素类型必须是case

第5章 RDD编程进阶

社会主义新天地 提交于 2020-02-08 17:08:01
上篇: 第4章 大数据Spark连接HBase数据读取与保存 Spark 三大数据结构 RDD:分布式数据集 广播变量:分布式只读共享变量 累加器: 分布式只写共享变量 1、累加器 累加器用来对信息进行聚合,通常在向 Spark传递函数时,比如使用 map() 函数或者用 filter() 传条件时,可以使用驱动器程序中定义的变量,但是集群中运行的每个任务都会得到这些变量的一份新的副本,更新这些副本的值也不会影响驱动器中的对应变量。如果我们想实现所有分片处理时更新共享变量的功能,那么累加器可以实现我们想要的效果。 代码具体实现: package com . study . bigdatabase import org . apache . hadoop . hbase . HBaseConfiguration import org . apache . hadoop . hbase . client . Put import org . apache . hadoop . hbase . io . ImmutableBytesWritable import org . apache . hadoop . hbase . mapred . TableOutputFormat import org . apache . hadoop . hbase . util . Bytes

spark RDD基础装换操作--zip操作

杀马特。学长 韩版系。学妹 提交于 2020-02-08 10:13:59
14.zip操作 将数字1~3组成的RDD,与字母A到C组成的RDD应用拉链(zip)操作,合并到一个新的RDD中。 scala> val rddData1 = sc.parallelize(1 to 10,5) rddData1: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[32] at parallelize at <console>:24 scala> val rddData2 = rddData1.glom rddData2: org.apache.spark.rdd.RDD[Array[Int]] = MapPartitionsRDD[33] at glom at <console>:26 scala> rddData2.collect res13: Array[Array[Int]] = Array(Array(1, 2), Array(3, 4), Array(5, 6), Array(7, 8), Array(9, 10)) scala> val rddData1 = sc.parallelize(1 to 3, 2) rddData1: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[34] at parallelize at

spark学习笔记

一个人想着一个人 提交于 2020-02-08 09:34:23
1. 集群部署方式 standalone Mesos Yarn K8s 2. 基本概念 Application :指的是用户编写的Spark应用程序,包含了含有一个Driver功能的代码和分布在集群中多个节点上运行的Executor代码。 Driver :运行Application的main函数并创建SparkContext,SparkContext的目的是为了准备Spark应用程序的运行环境。SparkContext负责资源的申请、任务分配和监控等。当Executor运行结束后,Driver负责关闭SparkContext; Job :一个Application可以产生多个Job,其中Job由Spark Action触发产生。每个Job包含多个Task组成的并行计算。 Stage :每个Job会拆分为多个Task,作为一个TaskSet,称为Stage;Stage的划分和调度是由DAGScheduler负责的。Stage分为Result Stage和Shuffle Map Stage; Task :Application的运行基本单位,Executor上的工作单元。其调度和 管理又TaskScheduler负责。 RDD :Spark基本计算单元,是Spark最核心的东西。表示已被分区、被序列化、不可变的、有容错机制的、能被并行操作的数据集合。 DAGScheduler

spark面试总结2

最后都变了- 提交于 2020-02-08 05:57:29
Spark core面试篇02 1.cache后面能不能接其他算子,它是不是action操作? 答:cache可以接其他算子,但是接了算子之后,起不到缓存应有的效果,因为会重新触发cache。 cache不是action操作 2.reduceByKey是不是action? 答:不是,很多人都会以为是action,reduce rdd是action 3.数据本地性是在哪个环节确定的? 具体的task运行在那他机器上,dag划分stage的时候确定的 4.RDD的弹性表现在哪几点? 1)自动的进行内存和磁盘的存储切换; 2)基于Lingage的高效容错; 3)task如果失败会自动进行特定次数的重试; 4)stage如果失败会自动进行特定次数的重试,而且只会计算失败的分片; 5)checkpoint和persist,数据计算之后持久化缓存 6)数据调度弹性,DAG TASK调度和资源无关 7)数据分片的高度弹性,a.分片很多碎片可以合并成大的,b.par 5.常规的容错方式有哪几种类型? 1).数据检查点,会发生拷贝,浪费资源 2).记录数据的更新,每次更新都会记录下来,比较复杂且比较消耗性能 6.RDD通过Linage(记录数据更新)的方式为何很高效? 1)lazy记录了数据的来源,RDD是不可变的,且是lazy级别的,且rDD 之间构成了链条,lazy是弹性的基石。由于RDD不可变

Spark源码解析-Master的启动流程

偶尔善良 提交于 2020-02-08 05:25:14
文章目录 1.main方法 1.1 startRpcEnvAndEndpoint() 1.1.1 create 1.1.2 setupEndpoint() 1.2 Constructor 2. onStart()方法 大致的整体启动流程如下: 1.main方法 在StandAlone模式下,Spark集群中存在两种重要的节点,分别是Master和Worker。那么作为集群管理器的Master到底是怎样启动的呢?我们通过源码来查看一下。 在运行了start-all.sh脚本之后,最终Master类会启动(至于脚本的启动过程在此省略)。 下面是Master的伴生对象的main方法: // 启动 Master 的入口函数 def main ( argStrings : Array [ String ] ) { Utils . initDaemon ( log ) val conf = new SparkConf // 构建用于参数解析的实例 --host hadoop201 --port 7077 --webui-port 8080 val args : MasterArguments = new MasterArguments ( argStrings , conf ) // 启动 RPC 通信环境和 MasterEndPoint val ( rpcEnv , _ , _ ) : (

Spark集群术语

我是研究僧i 提交于 2020-02-08 03:43:42
Spark集群术语解析 1. Application Application是用户在Spark上构建(编写)的程序,包含driver program 和executors(分布在集群中多个节点上运行的Executor代码)。 2. SparkContext Spark的上下文对象,是程序的起点,通往集群的入口(与cluster进行连接),通过其可以创建RDD(获取数据),在其中配置的参数拥有最高优先级。在Spark中由SparkContext负责和ClusterManager通行,进行资源的申请,任务的分配和监控等。 3. Driver program 包含应用程序的main函数,并且运行时会创建SparkContext。当Executor部分运行完后,Driver负责将SparkContext关闭。 4. Cluster Manager 集群资源管理的外部服务,在Spark上现有Standalone(Spark自带的管理器),YARN(hadoop 2.x的管理器),Mesos等三种集群资源管理器,Standalone能满足绝大部分对集群资源管理的需求,基本上只有在集群中运行多套计算框架(例如同时运行MapReduce和Spark)的时候才建议使用YARN和Mesos。 5. Deploy mode 表明driver程序运行的位置。在”cluster”模式时

Spark核心概念

倖福魔咒の 提交于 2020-02-08 03:21:23
1、Application 基于spark的用户程序,包含了一个Driver Program以及集群上中多个executor; spark中只要有一个sparkcontext就是一个application ; 启动一个spark-shell也是一个application,因为在启动shark-shell时就内置了一个sc(SparkContext的实例); 2、Driver Program 运行Application的main()函数并且创建SparkContext的程序 。通常用SparkContext代表Driver Program; 3、Cluster Manager 在集群上获取资源的外部服务 。如:standalone、yarn、mesos;   各种不同的集群的区别:只是任务调度的粗细粒度不同,对学习spark没有影响,自己在学习时使用standalone即可; 4、Worker Node 集群中任何一个可以运行Application代码的节点 ; 可以在Worker Node启动Executor进程; 5、Executor 在Worker Node上为某Application启动一个 进程 ,该进程负责运行任务,并且负责将数据存在硬盘或者内存中; 每个Application都有各自独立的executors ; 比如:应用A在一个Node上启动Executor

spark1.6.1 on yarn搭建部署

随声附和 提交于 2020-02-08 03:17:38
注:本文是建立在hadoop已经搭建完成的基础上进行的。 Apache Spark是一个 分布式计算框架 ,旨在简化运行于计算机集群上的并行程序的编写。该框架对资源调度,任务的提交、执行和跟踪,节点间的通信以及数据并行处理的内在底层操作都进行了抽象。它提供了一个更高级别的API用于处理分布式数据。从这方面说,它与Apache Hadoop等分布式处理框架类似。但在底层架构上,Spark与它们有所不同。 Spark起源于加利福利亚大学伯克利分校的一个研究项目。学校当时关注分布式机器学习算法的应用情况。因此,Spark从一开始便为应对迭代式应用的高性能需求而设计。在这类应用中,相同的数据会被多次访问。该设计主要靠利用数据集内存缓存以及启动任务时的低延迟和低系统开销来实现高性能。再加上其容错性、灵活的分布式数据结构和强大的函数式编程接口,Spark在各类基于机器学习和迭代分析的大规模数据处理任务上有广泛的应用,这也表明了其实用性。 Spark支持四种运行模式。 本地单机模式:所有Spark进程都运行在同一个Java虚拟机(Java Vitural Machine,JVM)中。 集群单机模式:使用Spark自己内置的任务调度框架。 基于Mesos:Mesos是一个流行的开源集群计算框架。 基于YARN:即Hadoop 2,它是一个与Hadoop关联的集群计算和资源调度框架 。

Spark基本架构及原理

那年仲夏 提交于 2020-02-08 02:54:09
Apache Spark是一个围绕速度、易用性和复杂分析构建的大数据处理框架,最初在2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apache的开源项目之一,与Hadoop和Storm等其他大数据和MapReduce技术相比,Spark有如下优势: Spark提供了一个全面、统一的框架用于管理各种有着不同性质(文本数据、图表数据等)的数据集和数据源(批量数据或实时的流数据)的大数据处理的需求 官方资料介绍Spark可以将Hadoop集群中的应用在内存中的运行速度提升100倍,甚至能够将应用在磁盘上的运行速度提升10倍 目标: 架构及生态 spark 与 hadoop 运行流程及特点 常用术语 standalone模式 yarn集群 RDD运行流程 架构及生态: 通常当需要处理的数据量超过了单机尺度(比如我们的计算机有4GB的内存,而我们需要处理100GB以上的数据)这时我们可以选择spark集群进行计算,有时我们可能需要处理的数据量并不大,但是计算很复杂,需要大量的时间,这时我们也可以选择利用spark集群强大的计算资源,并行化地计算,其架构示意图如下: Spark Core:包含Spark的基本功能;尤其是定义RDD的API、操作以及这两者上的动作。其他Spark的库都是构建在RDD和Spark Core之上的 Spark SQL:提供通过Apache