Spark
.Mr Zhang
这个作者很懒,什么都没留下…
展开
-
Spark常见问题
Executor OOM前篇内存优化有过介绍,Spark内存主要用在执行计算、持久化存储两个方面,这两部分内存共享一片区域。一般是执行计算方面出现OOM1.考虑通过调低spark.memory.fraction参数适当减少持久化存储的份额,让计算内存有更多的内存使用。2.考虑在shuffle操作中,调低map端buffer大小,以多次溢写磁盘IO消耗的代价换取更多的执行内存;调低redu...原创 2020-01-21 09:38:14 · 166 阅读 · 0 评论 -
Spark数据倾斜及解决办法
数据倾斜在执行shuffle操作过程中,map端按照key分配数据输出,reduce端同样也按照key进行拉取、聚合。通常每一个key对应的数据量不对等,经常出些某些key数据量比其他key多很多。这种现象导致的后果,轻则拖慢job执行时间(执行时间由最慢的task决定),重则直接OOM(数据量太大,处理完成前不能回收内存)原因我觉得是两个必要条件,缺一个都不发生数据倾斜,而我们打破其中一个...原创 2020-01-21 00:38:37 · 225 阅读 · 0 评论 -
Spark其他调优的点
并行度为了充分利用集群,可以调整每一个操作的并行度。Spark已经给各个参数默认设置了并行任务的数量。可以做的就是传入操作的第二参数来改变并行度,或者通过spark.default.parallelism参数来设置默认并行度。一般,官方推荐每一个CPU核对应2~3个Task。mapPartitions 代替 mapmap算子每一个元素执行一次func,而mapPartitions 算子每一个...原创 2020-01-19 14:58:13 · 140 阅读 · 0 评论 -
Spark内存调优
由于Spark是基于内存计算的,所以集群中资源(比如CPU、带宽、内存)都会成为瓶颈。当集群内存够用时,网络带宽往往成为瓶颈。所有优化主要从两个方面进行:一个是数据序列化(提升网络性能,减少内存使用等),一个是内存优化数据序列化序列化在分布式应用程序中占用重要地位。Spark提供两种序列化库:Java serialization 拿来就用,但是太慢了。Kryo serialization...原创 2020-01-19 13:31:45 · 579 阅读 · 0 评论 -
SparkStreaming-DStream与DataFrame SQL联合操作
查询使用的SparkSession 可由StreamingContext中的SparkContext来创建,以此用来进行DataFrame Sql操作。val words: DStream[String] = ...words.foreachRDD { rdd => // 获取单例SparkSession val spark = SparkSession.builder.co...原创 2020-01-19 10:12:23 · 858 阅读 · 3 评论 -
SparkStreaming-DStream
Spark Streaming接收数据并将其分隔成一批批的数据,然后被Spark engine处理形成一批批的结果。需指出,Spark Streaming可以被应用与机器学习和图计算。Spark Streaming提供了一个高级抽象称为DStream,代表连续的数据流。DStream可从kafka、flume、kinesis等数据源创建,DStream内部是一个RDDs序列。快速入门Str...原创 2020-01-18 15:22:06 · 359 阅读 · 0 评论 -
SparkSql-数据源
常用加载/保存默认数据源是parquet ,除非用spark.sql.sources.default配置参数定义为其他。val usersDF = spark.read.load("examples/src/main/resources/users.parquet")usersDF.select("name", "favorite_color").write.save("namesAndFa...原创 2020-01-17 18:06:56 · 208 阅读 · 0 评论 -
SparkSql-自定义聚合函数
像Hive一样自定义聚合函数弱类型自定义聚合函数继承UserDefinedAggregateFunction 来实现,面向DataFrameimport org.apache.spark.sql.{Row, SparkSession}import org.apache.spark.sql.expressions.MutableAggregationBufferimport org.apa...原创 2020-01-17 15:23:27 · 359 阅读 · 0 评论 -
SparkSql-Datasets和DataFrames
SparkSql顾名思义就是可以执行sql查询,同样也可以用于从hive查询数据。DatasetsDatasets分布式数据集。spark 1.6引入,提供了RDD的优点(强类型、强大的lambda函数)和Spark-SQL优化了的执行引擎。它可由JVM对象创建,然后使用函数式转换进行修改,比如map、flatmap、filter等。DataFramesDataFrames列已命名的Dat...原创 2020-01-17 14:21:15 · 198 阅读 · 0 评论 -
共享变量
Spark共享变量 广播变量 累加器原创 2020-01-15 18:05:33 · 845 阅读 · 0 评论 -
Spark 数据读取和保存
文本文件val hdfsFile = sc.textFile("hdfs://hadoop01:9000/employee.txt")hdfsFile.saveAsTextFile("/employeeOut")JSON文件每一行是一条JSON串import scala.util.parsing.json.JSONval json = sc.textFile("/employee...原创 2020-01-15 17:19:21 · 351 阅读 · 0 评论 -
RDD 持久化和CheckPoint
RDD 持久化RDD持久化不仅仅指平常理解的物化,在这里还可以内存化。通过在RDD上调用persist() 或 cache()来进行持久化,并在第一次行动算子被调用时真正执行。持久化的目的是RDD重用、提速,同时提供一定的容错性,如果某个RDD出错,所需数据自动按照RDD依赖关系进行重新计算得到。RDD持久化分为不同级别,可以持久化数据集到磁盘、可以持久化到内存(序列化成java对象是为了节约...原创 2020-01-15 16:01:28 · 287 阅读 · 0 评论 -
理解Shuffle
Shuffle是spark跨不同分区重新分布分组数据的机制,这个操作会跨executor、机器copy数据底层机制以 reduceByKey 为例将所有属于key的values经过func运算聚合成一个tuple(key,new calc value)。问题是,并不是跟key相关的所有values都会出现在一个分区里,甚至出现在同一个节点里,而这些数据都需要全部归集起来进行计算。相当于从所有...原创 2020-01-15 11:15:29 · 585 阅读 · 0 评论 -
RDD的操作
RDD的创建三种创建方式从内存中创建使用parallelize val rdd = sc.parallelize(Array(1,2,3,4,5,6,7,8))使用makeRDD val rdd1 = sc.makeRDD(Array(1,2,3,4,5,6,7,8))从外部存储创建(往后看)由其他RDD转换(往后看)传递给RDD的函数运行在集群中的Spar...原创 2020-01-14 18:56:22 · 1068 阅读 · 0 评论 -
Spark YARN模式
YARN模式下:Hadoop Resources Manager进程就是Cluster Manager配置步骤确保spark-env.sh中HADOOP_CONF_DIR 或 YARN_CONF_DIR 指向 Hadoop 集群的配置文件目录。追加YARN_CONF_DIR 环境变量:vim spark-env.shYARN_CONF_DIR=/home/hadoop/hadoop-2....原创 2020-01-12 23:04:26 · 146 阅读 · 0 评论 -
Spark Standalone模式
Standalone模式下:master进程就是Cluster Manager配置步骤在spark/conf/下配置slaves1.mv slaves.template slaves2.vim slaveshadoop01hadoop02hadoop03在spark/conf/下配置spark-env.sh1.mv spark-env.sh.template spark-env...原创 2020-01-12 22:24:39 · 252 阅读 · 1 评论 -
Spark准备
基础信息版本:2.3.0官网下载 download支持:Java 8+, Python 2.7+/3.4+ and R 3.1+Scala :2.11.x安装完成后,跑一跑./bin/run-example SparkPi 10./bin/spark-shell --master local[2]Spark应用程序相关概念Spark application(Spark应用程序):...原创 2020-01-12 17:38:32 · 174 阅读 · 0 评论