spark
文章平均质量分 78
xuehuagongzi000
这个作者很懒,什么都没留下…
展开
-
一、sparkStreaming算子操作
DStream中的算子分为两大类:Transformations 和Output1、Transformations on DStreams与RDDs类似,转换允许修改来自输入DStream的数据。DStreams支持普通Spark RDD上可用的许多转换。下面是一些常见的算子。2、Spark Streaming 的 transform和broadCast 操作:黑名单object _1Streaming_tranform { def main(args: Array[Str.原创 2021-04-29 17:47:39 · 246 阅读 · 0 评论 -
二、park算子:行动RDD的Action操作(1)–first、count、reduce、collect、take、top、takeOrdered、aggregate、fold、lookup、c
first、count比较简单reducedef reduce(f: (T, T) ⇒ T): T根据映射函数f,对RDD中的元素进行二元计算,返回计算结果。案例1:scala> var rdd1 = sc.makeRDD(1 to 10,2)scala> rdd1.reduce(_ + _)res18: Int = 55案例2:scala> var rdd2 = sc.makeRDD(Array(("A",0),("A",2),("B",1),("B",2)原创 2021-04-28 20:23:44 · 219 阅读 · 0 评论 -
spark on hive & hive on spark的区别
Spark on Hive :数据源是:hiveSpark 获取hive中的数据,然后进行SparkSQL的操作(hive只是作为一个spark的数据源)。spark on hive : 是spark 通过spark-sql 使用hive 语句操作hive ,底层运行的还是 spark rdd.*(1)就是通过sparksql,加载hive的配置文件,获取到hive的元数据信息* (2)spark sql获取到hive的元数据信息之后就可以拿到hive的所有表的数据* (3)接下来就...原创 2020-05-12 11:10:09 · 3923 阅读 · 0 评论 -
四、DataFrame和DataSet的使用案例
import org.apache.spark.sql.{DataFrame, SQLContext}import org.apache.spark.{SparkConf, SparkContext}//功能一:采用RDD+case class 的方式来构造dataSets,实现某个电影中男性女性中不同年龄的有多少人case class Rating(var userId:String,var movieId:String,var Rating:Double,var TimeStamp:Stri.原创 2020-05-11 18:41:39 · 420 阅读 · 0 评论 -
四、RDD、DataFrame和DataSet之间的转化和异同点
RDD关心数据,DataFrame关心结构,DataSet关心类型; ① 将RDD转换为DataFrame,需要增加结构信息,所以调用toDF方法,需要增加结构; ② 将RDD转换为DataSet,需要增加结构和类型信息,所以需要转换为指定类型后,调用toDS方法; ③ 将DataFrame转换为DataSet时,因为已经包含结构信息,只有增加类型信息就可以,所以调用as[类型] ④因为DF中本身包含数据,所以转换为RDD时,直接调用rdd即可; ⑤因为DS中本身包含数据,所以原创 2020-05-11 14:13:09 · 570 阅读 · 0 评论 -
sparkSQL之DataFrame创建
1、 SparkSession是SQLContext和HiveContext的组合; 为了向后兼容,所以在SQLContext和HiveContext上可用的API在SparkSession上同样是可以使用的。SparkSession内部封装了sparkContext、SparkConf、SQLContext,所以计算实际上是由sparkContext完成的。----为用户提供一个统一的切入点使用Spark各项功能----允许用户通过它调用DataFrame和Dataset...原创 2020-05-11 11:38:33 · 405 阅读 · 0 评论 -
sparkSQL之数据源读取parquet、json、csv案例
1、读取parquet数据源import org.apache.spark.sql.SQLContextimport org.apache.spark.{SparkConf, SparkContext}/** * Created by Administrator on 2017/2/3. */object ParquetLoadData { def main(args: Array[String]): Unit = { val conf = new SparkConf().原创 2020-05-11 11:17:01 · 407 阅读 · 0 评论 -
SparkStreaming如何解决小文件问题
使用sparkstreaming时,如果实时计算结果要写入到HDFS,默认情况下会产生非常多的小文件。那么假设,一个batch为10s,每个输出的DStream有32个partition,那么1h产生的文件数将会达到(3600/10)*32=11520个之多。众多小文件带来的结果是有大量的文件元信息,比如文件的location、文件大小、block number等需要NameNode来维护,Nam...原创 2020-05-07 17:59:35 · 1091 阅读 · 0 评论 -
spark CheckPoint的写流程源码分析
Checkpoint 写数据时序图:1、开始checkpoint,即写入 RDD 到 hdfs开始 checkpoint 的入口 是在 SparkContext 提交 Job 时(提交 Job 是发生在 RDD 调用 action 算子时),即 在 SparkContext 的 runJob:SparkContext.scala/*This is the main en...原创 2020-04-13 17:43:03 · 213 阅读 · 0 评论 -
spark利用scala操作hdfs
1、读取hdfs目录:hadoop dfs -ls path相当于listStatus的简写//checkpoint目录是:/user/dmspark/accumulate/checkpoint//e.g. /user/dmspark/accumulate/checkpoint/0519936a-5bff-4ecf-a6f0-3854e5952ec9/rdd-689/part-00099...原创 2020-03-23 12:02:28 · 699 阅读 · 0 评论 -
spark的jvm调优
1、实际应用val sc = new SparkContext(new SparkConf(). setAppName("product3_source"). set("spark.serializer", "org.apache.spark.serializer.KryoSerializer"). set("spark.memory.useLegacyMode", "true"...原创 2020-01-21 11:17:34 · 166 阅读 · 0 评论 -
spark数据倾斜解决方案
1、适当提高reducer端的并行度适用场景:如果某个 Task 有 100个 Key ·且数据量特别大,就极有可能导致 OOM 或者任务运行特别慢,此时如果把并行度变大,则可以分解该 Task 的数据量,例如,把原本 Task 的 100 个 Key 分解给 10 个 Task,这就可以减少每个 Task 的数据量,从而有可能解决 OOM 和任务运行慢的问题 。2、使用随机...原创 2020-01-20 16:34:46 · 145 阅读 · 0 评论 -
spark知识点
1、spark为什么比hadoop计算快?(1)、落地方式不同mapreduce任务每一次处理完成之后所产生的结果数据只能够保存在磁盘,后续有其他的job需要依赖于前面job的输出结果,这里就只能够进行大量的io操作获取得到,性能就比较低。spark任务每一次处理的完成之后所产生的结果数据可以保存在内存中,后续有其他的job需要依赖于前面job的输出结果,这里就可以直接从内存中获取得到...原创 2020-01-16 17:42:50 · 192 阅读 · 0 评论 -
flink和spark的区别
1、spark本身是无状态的,所以我们可以把它看成一个rdd一个算子一个rdd的去处理,就是说可以看成分段处理,但是flink是有状态的,我们要把它看成一个个event记录去处理,当遇到窗口时会进行阻塞等待,窗口的聚合操作是无状态的。过了窗口后DataStream的算子聚合操作就是有状态的操作了,所以flink要把聚合操作都放到窗口操作之前,才能进行无状态的聚合操作。而spark全程都是无状态的,...原创 2019-12-10 18:45:46 · 1260 阅读 · 0 评论 -
spark中excutor的个数、内存大小、core的个数、task的个数、分区的个数、集群的资源情况等的关系
目录1、Spark性能调优之资源分配大体上这两个方面:core mem(1)、分配哪些资源?(2)、在哪里分配这些资源?(3)、调节到多大,算是最大呢?(4)、为什么调节了资源以后,性能可以提升?2、分区个数和task个数的关系3、Spark性能调优之合理设置并行度(1)、Spark的并行度指的是什么?(2)、如何去提高并行度?1...原创 2019-11-15 11:28:34 · 9794 阅读 · 3 评论 -
Spark on yarn工作模式。 Client和Cluster两种运行模式的工作流程、基本概念。spark工作流程
目录1、首先介绍yarn的模型图(1)、yarn 模型图(2)、yarn的流程如下:2、cluster模式下提交任务流程(1)、流程图如下(2)、工作流程如下:3、在Client模式下,Driver进程会在当前客户端启动,客户端进程一直存在直到应用程序运行结束。(1)、client模式下的流程图(2)、工作流程如下:4、Spark任务调度1、首先介...原创 2019-11-14 18:59:26 · 1079 阅读 · 0 评论 -
spark什么计算运行在excutor,什么算子运行在driver?
什么计算运行在excutor,什么算子运行在driver?(1)、foreachRdd运行在driver节点,因为它是操作dstream的。foreachPartition和foreach运行在worker节点,因为它是操作rdd的。foreachRdd开启对任务的启动,当执行到执行算子的时候开始任务的执行。(2)、对rdd进行操作的就运行在worker节点,对dstream进行操作的就运行...原创 2019-11-04 19:35:46 · 4246 阅读 · 0 评论 -
spark、storm消费kafka为啥不阻塞?消费kafka运行在每个excutor,还是运行在driver?
excutor端,每个task消费一个partition。1、dirct直接连接:即每个executor直接取kafka获取数据(1)、首先Driver程序会定时(batchInterval)的向executor中发送任务(task)。 >> 问题1:为什么是4个任务? >> 因为spark会对每个partition开启一个任务,所以...转载 2019-11-04 18:09:39 · 444 阅读 · 0 评论 -
spark解析离线日志:spark每天读取离线hdfs日志存放到hdfs目录下,创建hive表进行分析
1、日志和代码{"date":"20190312095854","uid":"d0e213542e032203","reason":"2","sver":"7.1.2"}{"date":"20190312095855","uid":"c43632a682d79c64","reason":"2","sver":"7.1.3"}package com.tv.sohu.sparkimp...原创 2019-03-12 16:56:14 · 1587 阅读 · 0 评论 -
sparkStreaming实现exactly-once,使用redis保存offset
本文主要记录使用SparkStreaming从Kafka里读取数据,并使用Redis保存Offset。1.Redis Poolobject InternalRedisClient extends Serializable { @transient private var pool: JedisPool = null def makePool(redisHost: String...转载 2019-04-17 22:24:25 · 623 阅读 · 0 评论 -
二、Spark算子:基本RDD转换操作(1)–map、flatMap、distinct、coalesce、repartition、union、intersection、subtract
1、数据hadoop fs -cat /tmp/1234/1.txthello worldhello sparkhello hive//读取HDFS文件到RDDscala> var data = sc.textFile("/tmp/1234/1.txt")data: org.apache.spark.rdd.RDD[String] = MapPartitio...原创 2019-04-20 00:28:41 · 1094 阅读 · 0 评论 -
二、Spark算子:键值RDD转换操作(3)–mapValues、leftOuterJoin、rightOuterJoin、subtractByKey(按照key进行去除)、cogroup、join
1、leftOuterJoinvar rdd1 = sc.makeRDD(Array(("A","1"),("B","2"),("C","3")),2)var rdd2 = sc.makeRDD(Array(("A","a"),("C","c"),("D","d")),2)rdd1.leftOuterJoin(rdd2).collect.foreach(println(_))结果:...原创 2019-04-24 23:46:11 · 312 阅读 · 0 评论 -
spark shuffle总结
一、未经优化的HashShuffleManagershuffle write:stage结束之后,每个task处理的数据按key进行“分类”数据先写入内存缓冲区缓冲区满,溢出到磁盘文件最终,相同key被写入同一个磁盘文件创建的磁盘文件数量 = 当前stagetask数量 * 下一个stage的task数量shuffle read:从上游stage的所有task节点上拉取属于...转载 2019-06-19 16:22:13 · 784 阅读 · 0 评论 -
有状态的sparkStreaming
1、mapWithState案例:是wordCount小程序,单词word持续增加,由5增加到100了,还会持续增加,因为用到了它的前置数据。必须checkPoint。 ssc.checkpoint("hdfs://linux-hadoop01.ibeifeng.com:8020/beifeng/spark/streaming/chkdir45254")def mappingFun...原创 2019-06-20 08:01:22 · 254 阅读 · 0 评论 -
spark链接mysql数据库
如果不进行foreachPartition,该操作的并发度为1,你所有的数据都会在一个partition中进行操作,意味着无论你给的资源有多少,只有一个task会执行任务,执行效率可想而之,并且在稍微大点的表中进行操作分分钟就会OOM。所以需要foreachPartition,这样的话就会有多个task,每个task一个线程的去处理该任务。package com.tv.sohu.s...原创 2019-03-10 23:24:10 · 322 阅读 · 0 评论