
spark
文章平均质量分 67
ShyieZhang
这个作者很懒,什么都没留下…
展开
-
spark源码分析— spark广播变量
spark广播变量是spark中一种只读的数据,广播的数据被集群不同节点共享,且默认存储在内存中,读取速度比较快。spark内部有很多地方都使用的广播变量功能,比如spark sql的join有一种broadcast join,就是使用广播变量实现的小表join的优化;spark提交job时,将task的依赖关系广播到集群等。接下来,分析一下,spark广播变量的实现细节:```val broad...原创 2018-05-06 14:02:18 · 1228 阅读 · 1 评论 -
spark源码分析-shuffle write
Spark会将job划分为多个Stage,每个job会由多个ShuffleMapStage和一个ResultStage组成,然后每个Stage会由多个Task组成,Task数量和每个Stage的Partition的数量相同。每个Task任务由单独的线程执行,不同Stage的Task之间需要进行数据流动,并且下游Stage的Task会依赖上游Stage的多个Task,所以该过程需要将数据写入磁盘,并...原创 2018-12-08 18:32:19 · 402 阅读 · 0 评论 -
spark sql窗口函数
窗口函数是spark sql模块从1.4之后开始支持的,主要用于解决对一组数据进行操作,同时为每条数据返回单个结果,比如计算指定访问数据的均值、计算累进和或访问当前行之前行数据等,这些场景使用普通函数实现是比较困难的。窗口函数计算的一组行,被称为Frame。每一个被处理的行都有一个唯一的frame相关联。Spark SQL支持三类窗口函数:排名函数、分析函数和聚合函数。以下汇总了Spark S...翻译 2018-09-28 22:18:42 · 7029 阅读 · 3 评论 -
java.lang.NoClassDefFoundError: Could not initialize class org.xerial.snappy.Snappy
在linux平台,spark读取hdfs上的parquet文件时,抛出的Snappy类不能初始化:java.util.concurrent.ExecutionException: java.lang.NoClassDefFoundError: Could not initialize class org.xerial.snappy.Snappy...Caused by: jav...原创 2018-09-10 20:07:58 · 7217 阅读 · 2 评论 -
Drizzle:一种在大型集群快速、自适应的流式处理
Drizzle:一种在大型集群快速、自适应的流式处理大规模流媒体系统旨在提供高吞吐量和低延迟。它们经常被用来运行任务关键型应用程序,必须全天候可用。因此,这些系统需要适应工作量的变化和故障,这样做可以对延迟影响最小。不幸的是,已有的解决方案要求操作在实现低延迟在正常操作期间和引起最小影响在适应期间进行权衡。record-at-a-time流式传输系统,如Naiad和Flink,提供在正常执行期...翻译 2018-07-29 11:17:17 · 1368 阅读 · 0 评论 -
spark源码分析-ContextCleaner缓存清理
ContextCleaner是用于清理spark执行过程中内存,主要用于清理任务执行过程中生成的缓存RDD、Broadcast、Accumulator、Shuffle数据,防止造成内存压力。 ContextCleaner会在SparkContext创建过程中,被实例化:_cleaner = if (_conf.getBoolean("spark.cleaner.referen...原创 2018-07-15 11:03:00 · 2025 阅读 · 0 评论 -
通过sbt参数实现scala代码编译控制
因为我们基于spark的数据平台需要针对不同的spark版本进行代码的兼容,和项目构建的方便。需要通过使用sbt构建项目时通过指定spark版本来构建依赖不同spark版本的代码。 首先,我们将不兼容的项目代码分别放到不同的目录下,目录结构如下: 然后,通过不同指定不同的spark版本编译不同的兼容代码即可,具体sbt配置如下:val sparkV = "2.3.0"lazy ...原创 2018-06-11 20:46:00 · 894 阅读 · 0 评论 -
spark history server部署
spark history server是spark提供的spark应用历史数据查询服务,可以通过history server页面查看已经运行结束的spark应用的所有job执行情况,用于分析,因为spark集群保存的spark应用数量和每个应用的job数量有一定的限制,对于时间比较久远的应用或者应用的job数据无法在spark的web ui查看到并进行分析。所以spark提供了history s...原创 2018-05-13 17:50:42 · 1495 阅读 · 0 评论 -
spark源码分析—spark core(一):集群启动
spark集群通过spark的start-all.sh脚本进行启动,所以首先我们看一下该脚本的内容,该脚本内容很简单,它会通过调用相同目录下的start-master.sh脚本启动spark Master服务,调用start-slaves.sh脚本启动spark Worker服务。大家注意start-master.sh脚本只会在调用该脚本的机器启动Mater服务,如果Master是HA的话,需要到...原创 2018-05-13 17:41:46 · 481 阅读 · 0 评论 -
spark源码分析- shuffle read
Spark会将job划分为多个Stage,每个job会由多个ShuffleMapStage和一个ResultStage组成,然后每个Stage会由多个Task组成,Task数量和每个Stage的Partition的数量相同。每个Task任务由单独的线程执行,不同Stage的Task之间需要进行数据流动,并且下游Stage的Task会依赖上游Stage的多个Task,所以该过程需要将数据写入磁盘,并...原创 2018-12-09 19:41:03 · 765 阅读 · 0 评论