![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spark
我是丰儿你是沙
学一行,做一行,懂一行,爱一行…
展开
-
Spark-core(核心)的基本介绍
一、Spark Core提供Spark最基础与最核心的功能,主要包括以下功能:(1)SparkContext:通常而言,Driver Application的执行与输出都是通过SparkContext来完成的。在正式提交Application之前,首先需要初始化SparkContext。SparkContext隐藏了网络通信、分布式部署、消息通信、存储能力、计算能力、缓存、测量系统、文件服务、...原创 2018-10-12 21:13:20 · 6096 阅读 · 0 评论 -
Spark SQL:通用的load和save操作
一、通用的load和save操作对于Spark SQL的DataFrame来说,无论是从什么数据源创建出来的DataFrame,都有一些共同的load和save操作。load操作主要用于加载数据,创建出DataFrame;save操作,主要用于将DataFrame中的数据保存到文件中。Java版本DataFrame df = sqlContext.read().load("users.par...原创 2018-10-13 09:21:08 · 2703 阅读 · 1 评论 -
数据源Parquet之使用编程方式加载数据
一、Parquet是面向分析型业务的列式存储格式,由Twitter和Cloudera合作开发,2015年5月从Apache的孵化器里毕业成为Apache顶级项目,最新的版本是1.8.0。二、列式存储和行式存储相比有哪些优势呢?1、可以跳过不符合条件的数据,只读取需要的数据,降低IO数据量。2、压缩编码可以降低磁盘存储空间。由于同一列的数据类型是一样的,可以使用更高效的压缩编码(例如Run L...原创 2018-10-13 09:21:31 · 128 阅读 · 0 评论 -
Spark SQL:Parquet数据源之自动分区推断
自动分区推断(一)表分区是一种常见的优化方式,比如Hive中就提供了表分区的特性。在一个分区表中,不同分区的数据通常存储在不同的目录中,分区列的值通常就包含在了分区目录的目录名中。Spark SQL中的Parquet数据源,支持自动根据目录名推断出分区信息。例如,如果将人口数据存储在分区表中,并且使用性别和国家作为分区列。那么目录结构可能如下所示:tableName |- gender=m...原创 2018-10-13 09:22:29 · 1088 阅读 · 1 评论 -
SparkSQL:Parquet数据源之合并元数据
合并元数据如同ProtocolBuffer,Avro,Thrift一样,Parquet也是支持元数据合并的。用户可以在一开始就定义一个简单的元数据,然后随着业务需要,逐渐往元数据中添加更多的列。在这种情况下,用户可能会创建多个Parquet文件,有着多个不同的但是却互相兼容的元数据。Parquet数据源支持自动推断出这种情况,并且进行多个Parquet文件的元数据的合并。因为元数据合并是一种相...原创 2018-10-15 08:49:22 · 1492 阅读 · 0 评论 -
Spark SQL:JSON数据源
Spark SQL可以自动推断JSON文件的元数据,并且加载其数据,创建一个DataFrame。可以使用SQLContext.read.json()方法,针对一个元素类型为String的RDD,或者是一个JSON文件。但是要注意的是,这里使用的JSON文件与传统意义上的JSON文件是不一样的。每行都必须,也只能包含一个,单独的,自包含的,有效的JSON对象。不能让一个JSON对象分散在多行。否则...原创 2018-10-15 08:50:28 · 215 阅读 · 0 评论 -
Spark SQL:Hive数据源
一、Hive数据源实战Spark SQL支持对Hive中存储的数据进行读写。操作Hive中的数据时,必须创建HiveContext,而不是SQLContext。HiveContext继承自SQLContext,但是增加了在Hive元数据库中查找表,以及用HiveQL语法编写SQL的功能。除了sql()方法,HiveContext还提供了hql()方法,从而用Hive语法来编译sql。使用Hiv...原创 2018-10-15 08:50:54 · 499 阅读 · 0 评论 -
Spark SQL:JDBC数据源
一、JDBC数据源实战Spark SQL支持使用JDBC从关系型数据库(比如MySQL)中读取数据。读取的数据,依然由DataFrame表示,可以很方便地使用Spark Core提供的各种算子进行处理。这里有一个经验之谈,实际上用Spark SQL处理JDBC中的数据是非常有用的。比如说,你的MySQL业务数据库中,有大量的数据,比如1000万,然后,你现在需要编写一个程序,对线上的脏...原创 2018-10-15 08:51:14 · 273 阅读 · 0 评论 -
Spark Streaming :基本工作原理及hdfs文件越来越大问题
一、 Spark Streaming简介Spark Streaming是Spark Core API的一种扩展,它可以用于进行大规模、高吞吐量、容错的实时数据流的处理。它支持从很多种数据源中读取数据,比如Kafka、Flume、Twitter、ZeroMQ、Kinesis或者是TCP Socket。并且能够使用类似高阶函数的复杂算法来进行数据处理,比如map、reduce、join和window...原创 2018-10-15 08:55:39 · 469 阅读 · 0 评论 -
StreamingContext详解
一、 StreamingContext详解有两种创建StreamingContext的方式:val conf = new SparkConf().setAppName(appName).setMaster(master);val ssc = new StreamingContext(conf, Seconds(1));StreamingContext,还可以使用已有的SparkConte...原创 2018-10-16 08:40:12 · 10096 阅读 · 0 评论 -
使用spark实现max/min/topN等经典mapreduce问题
问题导读:使用spark如何实现最大值最小值问题?使用spark如何实现平均值问题?使用spark如何实现topN问题?摘要Spark是一个Apache项目,它被标榜为“快如闪电的集群计算”。它拥有一个繁荣的开源社区,并且是目前最活跃的Apache项目。Spark提供了一个更快、更通用的数据处理平台。和Hadoop相比,Spark可以让你的程序在内存中运行时速度提升100倍,或者在...原创 2018-11-26 15:19:05 · 2501 阅读 · 0 评论 -
SparkSQL:使用反射、编程方式将RDD转换为DataFrame
为什么要将RDD转换为DataFrame?因为这样的话,我们就可以直接针对HDFS等任何可以构建为RDD的数据,使用Spark SQL进行SQL查询了。这个功能是无比强大的。想象一下,针对HDFS中的数据,直接就可以使用SQL进行查询。一、Spark SQL支持两种方式来将RDD转换为DataFrame。第一种方式,是使用反射来推断包含了特定数据类型的RDD的元数据。这种基于反射的方式,代...原创 2018-10-13 09:20:44 · 526 阅读 · 0 评论 -
Spark SQL and DataFrame
一、概念1.Spark SQL:Spark SQL是Spark中的一个模块,主要用于进行结构化数据的处理。它提供的最核心的编程抽象,就是DataFrame。同时Spark SQL还可以作为分布式的SQL查询引擎。Spark SQL最重要的功能之一,就是从Hive中查询数据。2.DataFrameDataFrame,可以理解为是,以列的形式组织的,分布式的数据集合。它其实和关系型数据库中的表...原创 2018-10-13 09:20:06 · 120 阅读 · 0 评论 -
Spark性能优化:Shuffle性能优化
new SparkConf().set(“spark.shuffle.consolidateFiles”, “true”)spark.shuffle.consolidateFiles:是否开启shuffle block file的合并,默认为falsespark.reducer.maxSizeInFlight:reduce task的拉取缓存,默认48mspark.shuffle.file....原创 2018-10-13 09:19:37 · 526 阅读 · 0 评论 -
transformation和action的介绍
Spark支持两种RDD操作:transformation和action。区别:transformation操作会针对已有的RDD创建一个新的RDD;而action则主要是对RDD进行最后的操作,比如遍历、reduce、保存到文件等,并可以返回结果给Driver程序。例如,map就是一种transformation操作,它用于将已有RDD的每个元素传入一个自定义的函数,并获取一个新的元素,...原创 2018-10-12 21:13:42 · 1697 阅读 · 0 评论 -
共享变量、广播变量,累计器的工作原理图
一、共享变量二、广播变量三、累加器原创 2018-10-12 21:14:03 · 427 阅读 · 0 评论 -
RDD持久化,不使用RDD持久化的问题的工作原理
一、RDD持久化原理二、不使用RDD持久化的问题原理原创 2018-10-12 21:14:22 · 194 阅读 · 0 评论 -
Spark性能优化:诊断内存的消耗
一、内存都花费在哪里了?1、每个Java对象,都有一个对象头,会占用16个字节,主要是包括了一些对象的元信息,比如指向它的类的指针。如果一个对象本身很小,比如就包括了一个int类型的field,那么它的对象头实际上比对象自己还要大。2、Java的String对象,会比它内部的原始数据,要多出40个字节。因为它内部使用char数组来保存内部的字符序列的,并且还得保存诸如数组长度之类的信息。而且因...原创 2018-10-12 21:15:03 · 194 阅读 · 0 评论 -
Spark性能优化:高性能序列化类库
一、数据序列化概述:在任何分布式系统中,序列化都是扮演着一个重要的角色的。如果使用的序列化技术,在执行序列化操作的时候很慢,或者是序列化后的数据还是很大,那么会让分布式应用程序的性能下降很多。所以,进行Spark性能优化的第一步,就是进行序列化的性能优化。Spark自身默认就会在一些地方对数据进行序列化,比如Shuffle。还有就是,如果我们的算子函数使用到了外部的数据(比如Java内置类型,...原创 2018-10-12 21:15:32 · 111 阅读 · 0 评论 -
Spark性能优化:优化数据结构
如何优化数据结构?1、优先使用数组以及字符串,而不是集合类。也就是说,优先用array,而不是ArrayList、LinkedList、HashMap等集合。比如,有个List list = new ArrayList(),将其替换为int[] arr = new int[]。这样的话,array既比List少了额外信息的存储开销,还能使用原始数据类型(int)来存储数据,比List中用Int...原创 2018-10-12 21:15:59 · 160 阅读 · 0 评论 -
Spark性能优化:对RDD持久化或CheckPoint操作
对多次使用的RDD进行持久化或Checkpoint如果程序中,对某一个RDD,基于它进行了多次transformation或者action操作。那么就非常有必要对其进行持久化操作,以避免对一个RDD反复进行计算。此外,如果要保证在RDD的持久化数据可能丢失的情况下,还要保证高性能,那么可以对RDD进行Checkpoint操作。...原创 2018-10-13 09:16:13 · 229 阅读 · 0 评论 -
Spark性能优化:java虚拟机垃圾回收调优
高级垃圾回收调优(一)Java堆空间被划分成了两块空间,一个是年轻代,一个是老年代。年轻代放的是短时间存活的对象,老年代放的是长时间存活的对象。年轻代又被划分了三块空间,Eden、Survivor1、Survivor2。首先,Eden区域和Survivor1区域用于存放对象,Survivor2区域备用。创建的对象,首先放入Eden区域和Survivor1区域,如果Eden区域满了,那么就会触发...原创 2018-10-13 09:16:44 · 125 阅读 · 0 评论 -
Spark性能优化:提高并行度、使用reduceByKey
一、提高并行度实际上Spark集群的资源并不一定会被充分利用到,所以要尽量设置合理的并行度,来充分地利用集群的资源。才能充分提高Spark应用程序的性能。Spark会自动设置以文件作为输入源的RDD的并行度,依据其大小,比如HDFS,就会给每一个block创建一个partition,也依据这个设置并行度。对于reduceByKey等会发生shuffle的操作,就使用并行度最大的父RDD的并行度...原创 2018-10-13 09:17:10 · 3070 阅读 · 0 评论 -
Spark性能优化:数据本地化优化
1. 数据本地化背景数据本地化对于Spark Job性能有着巨大的影响。如果数据以及要计算它的代码是在一起的,那么性能当然会非常高。但是,如果数据和计算它的代码是分开的,那么其中之一必须到另外一方的机器上。通常来说,移动代码到其他节点,会比移动数据到代码所在的节点上去,速度要快得多,因为代码比较小。Spark也正是基于这个数据本地化的原则来构建task调度算法的。数据本地化,指的是,数据离计算...原创 2018-10-13 09:18:53 · 188 阅读 · 0 评论 -
Spark onYarn集群模式搭建
转载此博主https://blog.csdn.net/qq_21439395/article/details/80678372转载 2019-07-22 16:54:45 · 179 阅读 · 0 评论