Spark
文章平均质量分 92
大数据面试宝典
这个作者很懒,什么都没留下…
展开
-
一文带你快速了解 Spark 架构设计与原理思想
卷友们,大家好 ~ 本篇为大家介绍 关于Spark 的架构设计和原理,希望大家受用!如果觉得内容不错,记得多多转发?1-引子 MapReduce 主要使用磁盘存储计算过程中的数据,虽然可靠性比较高,但是性能却较差 。此外,MapReduce 只能使用 map 和 reduce 函数进行编程,虽然能够完成各种大数据计算,但是编程比较复杂 。而且受 map 和 reduce 编程模型相对简单的影响,复杂的计算必须组合多个 MapReduce job 才能完成,编程难度...转载 2021-12-01 20:29:55 · 339 阅读 · 0 评论 -
SparkSQL之一张贴讲明白RDD丶DataFrame丶DataSet
先上个图在SparkSQL中Spark为我们提供了两个新的抽象,分别是DataFrame和DataSet。他们和RDD有什么区别呢?首先从版本的产生上来看:在这里插入代码片如果同样的数据都给到这三个数据结构,他们分别计算之后,都会给出相同的结果。不同是的他们的执行效率和执行方式。在后期的Spark版本中,DataSet会逐步取代RDD和DataFrame成为唯一的API接口。三者的共性1、RDD、DataFrame、Dataset全都是spark平台下的分布式弹性数据集,为处理超大型数据提原创 2020-06-13 17:04:57 · 343 阅读 · 0 评论 -
SparkSQL之DataSet
Dataset是具有强类型的数据集合,需要提供对应的类型信息。创建一个DataSet吧先1)创建一个样例类scala> case class Person(name: String, age: Long)defined class Person2)创建DataSetscala> val caseClassDS = Seq(Person("Andy", 32)).toDS()caseClassDS: org.apache.spark.sql.Dataset[Person] = [n原创 2020-06-12 22:09:12 · 563 阅读 · 0 评论 -
SparkSQL之 SparkSQL编程入门
SparkSession 新的起始点在老的版本中,SparkSQL提供两种SQL查询起始点:一个叫SQLContext,用于Spark自己提供的SQL查询;一个叫HiveContext,用于连接Hive的查询。SparkSession是Spark最新的SQL查询起始点,实质上是SQLContext和HiveContext的组合,所以在SQLContext和HiveContext上可用的API在SparkSession上同样是可以使用的。SparkSession内部封装了sparkContext,所以计原创 2020-06-12 22:06:00 · 386 阅读 · 0 评论 -
SparkSQL之一张贴告诉你什么是SparkSQL
什么是SparkSQL?Spark SQL是Spark用来处理结构化数据的一个模块,它提供了2个编程抽象:DataFrame和DataSet,并且作为分布式SQL查询引擎的作用。我们已经学习了Hive,它是将Hive SQL转换成MapReduce然后提交到集群上执行,大大简化了编写MapReduc的程序的复杂性,由于MapReduce这种计算模型执行效率比较慢。所有Spark SQL的应运而生,它是将Spark SQL转换成RDD,然后提交到集群执行,执行效率非常快!SparkSQL的特点1.原创 2020-06-12 21:55:43 · 344 阅读 · 0 评论 -
Spark消费kafka数据时报错java.io.NotSerializableException: org.apache.kafka.clients.consumer.ConsumerRecord
1.上截图2.问题原因kafkaDatas 是一个 输入流而我却直接调用的print方法 所以出现了 序列化异常3.解决方案应当遍历,获取流中的数据value原创 2020-04-15 23:02:12 · 1381 阅读 · 1 评论 -
SparkCore之一张贴带你领悟RDD相关概念关系
输入可能以多个文件的形式存储在HDFS上,每个File都包含了很多块,称为Block。当Spark读取这些文件作为输入时,会根据具体数据格式对应的InputFormat进行解析,一般是将若干个Block合并成一个输入分片,称为InputSplit,注意InputSplit不能跨越文件。随后将为这些输入分片生成具体的Task。InputSplit与Task是一一对应的关系。随后这些具体的Task每...原创 2020-04-09 20:50:51 · 245 阅读 · 0 评论 -
SparkCore之RDD广播变量与累加器
累加器累加器用来对信息进行聚合,通常在向 Spark传递函数时,比如使用 map() 函数或者用 filter() 传条件时,可以使用驱动器程序中定义的变量,但是集群中运行的每个任务都会得到这些变量的一份新的副本,更新这些副本的值也不会影响驱动器中的对应变量。如果我们想实现所有分片处理时更新共享变量的功能,那么累加器可以实现我们想要的效果。系统累加器针对一个输入的日志文件,如果我们想计算文件...原创 2020-04-09 20:48:58 · 266 阅读 · 0 评论 -
SparkCore之数据的读取与保存
Spark的数据读取及数据保存可以从两个维度来作区分:文件格式以及文件系统。文件格式分为:Text文件、Json文件、Csv文件、Sequence文件以及Object文件;文件系统分为:本地文件系统、HDFS、HBASE以及数据库。文件类数据读取与保存Text文件1)数据读取:textFile(String)scala> val hdfsFile = sc.textFile(...原创 2020-04-09 20:45:59 · 367 阅读 · 0 评论 -
SparkCore之键值对RDD数据分区器
Spark目前支持Hash分区和Range分区,用户也可以自定义分区,Hash分区为当前的默认分区,Spark中分区器直接决定了RDD中分区的个数、RDD中每条数据经过Shuffle过程属于哪个分区和Reduce的个数注意:(1)只有Key-Value类型的RDD才有分区器的,非Key-Value类型的RDD分区器的值是None(2)每个RDD的分区ID范围:0~numPartitions...原创 2020-04-09 20:40:34 · 231 阅读 · 0 评论 -
SparkCore之RDDCheckPoint机制
Spark中对于数据的保存除了持久化操作之外,还提供了一种检查点的机制,检查点(本质是通过将RDD写入Disk做检查点)是为了通过lineage做容错的辅助,lineage过长会造成容错成本过高,这样就不如在中间阶段做检查点容错,如果之后有节点出现问题而丢失分区,从做检查点的RDD开始重做Lineage,就会减少开销。检查点通过将数据写入到HDFS文件系统实现了RDD的检查点功能。为当前RDD...原创 2020-04-09 20:28:08 · 224 阅读 · 0 评论 -
SparkCore之RDD缓存
RDD通过persist方法或cache方法可以将前面的计算结果缓存,默认情况下 persist() 会把数据以序列化的形式缓存在 JVM 的堆空间中。但是并不是这两个方法被调用时立即缓存,而是触发后面的action时,该RDD将会被缓存在计算节点的内存中,并供后面重用。通过查看源码发现cache最终也是调用了persist方法,默认的存储级别都是仅在内存存储一份,Spark的存储级别...原创 2020-04-09 20:25:46 · 264 阅读 · 0 评论 -
SparkCore之RDD依赖
1 LineageRDD只支持粗粒度转换,即在大量记录上执行的单个操作。将创建RDD的一系列Lineage(血统)记录下来,以便恢复丢失的分区。RDD的Lineage会记录RDD的元数据信息和转换行为,当该RDD的部分分区数据丢失时,它可以根据这些信息来重新运算和恢复丢失的数据分区。(1)读取一个HDFS文件并将其中内容映射成一个个元组scala> val wordAndOne = s...原创 2020-04-09 20:09:53 · 310 阅读 · 0 评论 -
SparkCore之RDDAPI编程
编程模型在Spark中,RDD被表示为对象,通过对象上的方法调用来对RDD进行转换。经过一系列的transformations定义RDD之后,就可以调用actions触发RDD的计算,action可以是向应用程序返回结果(count, collect等),或者是向存储系统保存数据(saveAsTextFile等)。在Spark中,只有遇到action,才会执行RDD的计算(即延迟计算),这样在运...原创 2020-04-09 20:02:23 · 356 阅读 · 0 评论 -
SparkCore之RDD的特点
RDD特点RDD表示只读的分区的数据集,对RDD进行改动,只能通过RDD的转换操作,由一个RDD得到一个新的RDD,新的RDD包含了从其他RDD衍生所必需的信息。RDDs之间存在依赖,RDD的执行是按照血缘关系延时计算的。如果血缘关系较长,可以通过持久化RDD来切断血缘关系。分区RDD逻辑上是分区的,每个分区的数据是抽象存在的,计算的时候会通过一个compute函数得到每个分区的数据。...原创 2020-04-09 18:14:34 · 255 阅读 · 0 评论 -
sparkCore之什么是RDD
什么是RDD●为什么要有RDD?在许多迭代式算法(比如机器学习、图算法等)和交互式数据挖掘中,不同计算阶段之间会重用中间结果,即一个阶段的输出结果会作为下一个阶段的输入。但是,之前的MapReduce框架采用非循环式的数据流模型,把中间结果写入到HDFS中,带来了大量的数据复制、磁盘IO和序列化开销。且这些框架只能支持一些特定的计算模式(map/reduce),并没有提供一种...原创 2020-04-09 17:53:21 · 213 阅读 · 0 评论 -
使用scala编写第一个spark程序
pom.xml<!-- 指定仓库位置,依次为aliyun、cloudera和jboss仓库 --> <repositories> <repository> <id>aliyun</id> <url>http://maven.aliyun.com/nexu...原创 2020-04-03 12:01:54 · 882 阅读 · 0 评论 -
Spark参数详解
spark-shellspark-shell是Spark自带的交互式Shell程序,方便用户进行交互式编程,用户可以在该命令行下可以用scala编写spark程序,适合学习测试时使用!●示例spark-shell可以携带参数spark-shell --master local[N] 数字N表示在本地模拟N个线程来运行当前任务spark-shell --master local[*] 表示...原创 2020-04-03 11:58:14 · 569 阅读 · 0 评论 -
spark安装之on yarn集群模式
●官方文档http://spark.apache.org/docs/latest/running-on-yarn.html准备工作1.安装启动Hadoop(需要使用HDFS和YARN,已经ok)2.安装单机版Spark(已经ok)注意:不需要集群,因为把Spark程序提交给YARN运行本质上是把字节码给YARN集群上的JVM运行,但是得有一个东西帮我去把任务提交上个YARN,所以需要一个...原创 2020-04-03 11:56:02 · 344 阅读 · 0 评论 -
spark安装之standalone-HA高可用模式
原理Spark Standalone集群是Master-Slaves架构的集群模式,和大部分的Master-Slaves结构集群一样,存在着Master单点故障的问题。如何解决这个单点故障的问题,Spark提供了两种方案:1.基于文件系统的单点恢复(Single-Node Recovery with Local File System)–只能用于开发或测试环境。2.基于zookeeper...原创 2020-04-03 11:53:00 · 558 阅读 · 0 评论 -
spark安装之Standalone集群模式
集群角色介绍Spark是基于内存计算的大数据并行计算框架,实际中运行计算任务肯定是使用集群模式,那么我们先来学习Spark自带的standalone集群模式了解一下它的架构及运行机制。Standalone集群使用了分布式计算中的master-slave模型,master是集群中含有master进程的节点slave是集群中的worker节点含有Executor进程●Spark架构图如下...原创 2020-04-03 11:49:39 · 509 阅读 · 0 评论 -
spark环境安装之local本地模式-Spark初体验
官方下载地址:官方下载博主百度云下载Spark安装包 提取码:2uuf提取码:2uuf1.上传安装,解压●解压重命名cd /export/serverstar spark-2.2.0-bin-2.6.0-cdh5.14.0.tgzmv spark-2.2.0-bin-2.6.0-cdh5.14.0 spark●注意:如果有权限问题,可以修改为root,方便学习时操作,实际中使...原创 2020-04-03 11:44:52 · 681 阅读 · 0 评论 -
spark入门篇之什么是Spark
Spark官方介绍●Spark是什么Apache Spark是用于大规模数据处理的统一分析引擎Spark基于内存计算,提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将Spark部署在大量硬件之上,形成集群。●官网http://spark.apache.orghttp://spark.apachecn.org...原创 2020-04-03 11:34:51 · 523 阅读 · 1 评论