随笔分类 - spark
摘要:Spark算子之aggregateByKey详解 一、介绍 根据源码中的注释介绍,总结下来,有这么几个点: 1. 该函数需要一个combine函数以及一个初始值 2. 函数可以返回一个与RDD中值类型不同的结果类型U 3. 我们需要一个针对每个分区合并操作,将单个分区中值(V)合并到该分区的聚合结果
阅读全文
摘要:一、spark累加器源码以创建一个long类型的累加器为例查看源码sc.longAccumulator跟踪这个longAccumulator这个方法进去可以看到/** * Create and register a long accumulator, which starts with 0 and accumulates inputs by `add`. */def longAccumulator...
阅读全文
摘要:Spark写HBase 要通过Spark向 HBase 写入数据,我们需要用到PairRDDFunctions.saveAsHadoopDataset的方式。 package cn.com.win import org.apache.hadoop.hbase.HBaseConfiguration i
阅读全文
摘要:Shuffle Read 对于每个stage来说,它的上边界,要么从外部存储读取数据,要么读取上一个stage的输出。而下边界要么是写入到本地文件系统(需要有shuffle),一共child stage进行读取,要么就是最后一个stage,需要输出结果。这里的stage在运行时就可以以流水线的方式进
阅读全文
摘要:存储模块存储级别意义NONE不会保存任何的数据DISK_ONLY直接将RDD的Partition保存在该节点的Disk上MEMORY_ONLY将RDD的Partition对应的原生的java object对象保存在JVM中。如果RDD太大,导致部分Partition无法保存在内存中的话,那么这些Partition将不会被缓存,在需要的时候,会被重新计算。这是默认的存储级别。MEMORY_ONLY_...
阅读全文
摘要:一、shuffle定义 shuffle,即为洗牌的意思,在大数据计算中,无论是mapreduce框架还是spark框架,都需要shuffle,那是因为在计算的过程中,具有某种特征的数据最终需要汇聚在一个节点上进行计算,这些数据是分部在集群中不同的节点上由各自节点进行计算。就比如以workcount为
阅读全文
摘要:RDD、DataFrame与DataSet三者有许多的共性,都有各自使用的场景,常常需要在三者之间进行转换DataFrame/Dataset 转 RDD:val rdd1=testDF.rddval rdd2=testDS.rdd RDD 转 DataFrame:// 一般用元组把一行的数据写在一起,然后在toDF中指定字段名import spark.implicits._val testDF =...
阅读全文
摘要:撰写本文的目的:对于sparksql,网上有大量的详细文档,本人针对常用的操作进行一个整理,当然有大多数都是从其他地方搬过来的,包括官方文档以及其他网友的一些分享,一来是通过此次整理加强自己的记忆,二来如果有幸帮到某位网友,那是本人莫大的荣幸,先感谢您的阅读,废话不多说,进入正文: 下文所涉及到的相
阅读全文
摘要:spark任务提交之后作业运行状态在spark向yarn提交作业之后,正常情况下,作业运行结束之前,状态分为两种,分别是:accept以及running一、accept 该状态表示Application已经提交给调度器。 在NEW_SAVEING转换为SUBMITTED状态的时候,RMAppImpl会除法StartAppAttemptTransition,这是会创建一个新的RMAppA...
阅读全文
摘要:业务场景 有如下数据: id intime outtime1190771865,2019-11-26 13:27:26,2019-11-26 13:27:26 1190771865,2019-11-26 13:27:26,2019-11-26 13:27:26 1190771865,2019-11-
阅读全文
摘要:Aggregate函数 一、源码定义 /** * Aggregate the elements of each partition, and then the results for all the partitions, using * given combine functions and a
阅读全文
摘要:UDF: 一、编写udf类,在其中定义udf函数 package spark._sql.UDF import org.apache.spark.sql.functions._ /** * AUTHOR Guozy * DATE 2019/7/18-9:41 **/ object udfs { def
阅读全文
摘要:分析函数的应用场景: (1)用于分组后组内排序 (2)指定计算范围 (3)Top N (4)累加计算 (5)层次计算 分析函数的一般语法: 分析函数的语法结构一般是: 分析函数名(参数) over (子partition by 句 order by 字句 rows/range 字句) 1、分析函数名
阅读全文
摘要:在spark中,框架默认使用的事hashPartitioner分区器进行对rdd分区,但是实际生产中,往往使用spark自带的分区器会产生数据倾斜等原因,这个时候就需要我们自定义分区,按照我们指定的字段进行分区。具体的流程步骤如下: 1、创建一个自定义的分区类,并继承Partitioner,注意这个
阅读全文
摘要:idea使用maven插件打jar包步骤以及遇到的问题 一、在pom中添加插件,直接复制就好,如下选项 注意:关于插件中这个地方需要注意一下: 这里分为两种情况 a.打包scala程序 如果只是打包scala程序的话,这里代表的是主函数的方法名,一定是全路径名(包名+类名) jar包运行方式:jav
阅读全文
摘要:需求1:给定一个RDD[Double],进行计算,该RDD的统计信息(count,mean,stdev,max,min) 代码: 结果: 该种方式(使用RDD[Double])的stats()的方法适合在单机上对数据两较小的情况下使用,在分布式环境并且数据位于多台机器的情况下,该种方法的执行效率就比
阅读全文
摘要:业务场景: 现在项目中需要通过对spark对原始数据进行计算,然后将计算结果写入到mysql中,但是在写入的时候有个限制: 1、mysql中的目标表事先已经存在,并且当中存在主键,自增长的键id 2、在进行将dataFrame写入表的时候,id字段不允许手动写入,因为其实自增长的 要求: 1、写入数
阅读全文
摘要:引言: spark项目中通常我们需要将我们处理之后数据保存到文件中,比如将处理之后的RDD保存到hdfs上指定的目录中,亦或是保存在本地 spark保存文件: 1、rdd.saveAsTextFile("file:///E:/dataFile/result") 2、rdd.saveAsHadoopF
阅读全文
摘要:需求: 1、需要从一张mysql数据表中获取并筛选数据 2、通过spark将该表读进来,形成一个df:DataFrame,有一个集合 3、需要从df中进行筛选出来name在list中的值 df.where('name.isin(list)).show() 结果: 然而,isin(),看源码: 里面需
阅读全文
摘要:一、函数的源码 由源码中看出,该函数中主要包含的参数: createCombiner:V=>C mergeValue:(C,V)=>C mergeCombiners:(C,C)=>R partitioner:Partitioner mapSideCombine:Boolean=true serial
阅读全文

浙公网安备 33010602011771号