Spark
得过且过1223
这个作者很懒,什么都没留下…
展开
-
SparkStreaming自定义数据源(即接收器)
自定义数据源(即接收器)实现接收sockey的接收器 集成Receiver抽象类 ,具体使用细节可查看Receiver 代码中注释部分有详细说明onStart启动一个子线程来结束数据接收到的数据通过调用store(data)传递给其他执行器进行处理如果发生异常,会重启接收器(按照顺序调用onStop,onStart)onStop释放资源package com.chen.sparksteaming.apiimport java.io.{BufferedReader, Inp原创 2020-08-27 17:41:00 · 366 阅读 · 0 评论 -
SparkSql自定义强类型、弱类型聚合函数
自定义弱类型package com.chen.sparksql.funcimport org.apache.spark.sql.expressions.{MutableAggregationBuffer, UserDefinedAggregateFunction}import org.apache.spark.sql.types.{DataType, DoubleType, LongType, StructField, StructType}import org.apache.spark.sql.原创 2020-08-25 16:42:41 · 476 阅读 · 0 评论 -
Spark广播变量与累加器
累加器解决了在Driver端创建的变量在Task中修改但最终不会修改Driver端的变量(Task修改的只是副本,不会同步回Execute)解决了共享变量写的问题当需要一个累加变量时,再Driver 定义作为计数的变量,会复制到Executor中RDD执行时候通过代码对其进行累加,但是结果不会被收集回Driver中,使用累加器可以把Executor的变量值收集回Driver并进行累加注意:累加器再Driver端定义初始化。1.6版本在Excutor不能使用.value 获取累加器的值Demoi原创 2020-08-23 17:22:00 · 150 阅读 · 0 评论 -
Spark分区器:HashParititioner、RandPartitioner、自定义分区器
HashParititioner聚合算子默认分区器 通过hash值分区RandPartitioner范围分区器排序类算子默认分区器使用水塘抽样算法(抽样概率相同),对数据进行抽样来划分数据边界数组:数组长度由分区数决定,通过水塘抽样计算出数据切分的范围 存放在边界数组中源码:/*** A [[org.apache.spark.Partitioner]] that partitions sortable records by range into roughly* equal range原创 2020-08-20 18:13:36 · 280 阅读 · 0 评论 -
Spark 使用 Kyro 序列化
序列化解决Driver端创建的对象 在Execute端传输问题方式一:使用Java Serializable接口【Spark默认】优点:简单,不需要额外的工作java自带,方便缺点:序列化速度慢序列化后size比较大hadoop中采取了自定义序列化 …Writable方式二: Kyro 第三方序列化【Spark支持】优点:序列化后的size 大概是Serializable 十分之一 val conf = new SparkConf().setAppName("Demo原创 2020-08-19 22:51:52 · 253 阅读 · 0 评论 -
Spark 基础知识点、三种模式安装
环境说明centos 7.5spark-2.1.1Spark 内置模块[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4F5IqC5c-1597227561772)(spark知识点/New Mockup 1.png)]Spark local 模式安装直接解压即可,无需配置(spark-2.1.1-bin-hadoop2.7.tgz 集成hadoop环境包 )local 模式下测试# 提交任务 使用spark案例 计算pibin/spark-submit -原创 2020-08-12 18:20:17 · 442 阅读 · 0 评论 -
Spark累加器与自定义累加器
累加器解决了在Driver端定义变量,在Executor 中对变量操作不会被回收到Driver端的问题。例如: val spark = SparkSession.builder().appName("AccumulatorDemo").master("local").getOrCreate() val sc = spark.sparkContext var i = 0;...原创 2020-03-03 00:06:57 · 135 阅读 · 0 评论 -
Spark 广播变量
广播变量解决task携带多份重复的Driver端变量,造成Executor内存资源浪费的问题Driver 端由 broadCastList 存放广播变量 并发送到每个Executor中每个 Executor 由 BlockManager 管理 broadCastListTask 首先向BlockManager 查看是否由需要的变量广播变量为了保证线程安全不能被修改注意事项:广播...原创 2020-03-02 20:59:18 · 172 阅读 · 0 评论 -
Spark常用算子
Transformations 算子转换算子 延迟执行、需要action算子触发执行、特点:RDD类型转换到RDDmap 将一个RDD中的每个数据项,通过map中的函数映射变为一个新的元素。特点:输入一条,输出一条数据。flatmap 一对多 输入一条数据 输出多条 (会转换成k v RDD) 先map后flat。与map类似,每个输入项可以映射为0到多个输出项。filter 过滤符...原创 2020-03-02 16:56:45 · 251 阅读 · 0 评论