自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

SmallScorpion

吾生若有志,则以数据照星辰,明而透之;以技术踏大海,敢而往之;以代码忖余生,积而累之。故,不负韶华。

  • 博客(62)
  • 资源 (4)
  • 收藏
  • 关注

原创 Spark-Core中Spark 部署模式|Yarn Cluster模式|任务提交SparkSubmit源码追踪

Spark 部署模式(1)Standalone:独立模式,Spark原生的简单集群管理器,自带完整的服务,可单独部署到一个集群中,无需依赖任何其他资源管理系统,使用Standalone可以很方便地搭建一个集群;(2)Hadoop YARN:统一的资源管理机制,在上面可以运行多套计算框架,如MR、Storm等。根据Driver在集群中的位置不同,分为yarn client和yarn clust...

2020-04-29 20:12:17 222

原创 Spark-Core中通讯架构解析|启动流程分析|集群启动的Master源码跟踪分析|集群启动的Worker源码跟踪分析|总结

通讯架构(1)RpcEndpoint:RPC端点。Spark针对每个节点(Client/Master/Worker)都称之为一个Rpc端点,且都实现RpcEndpoint接口,内部根据不同端点的需求,设计不同的消息和不同的业务处理,如果需要发送(询问)则调用Dispatcher;(2) RpcEnv:RPC上下文环境,每个RPC端点运行时依赖的上下文环境称为RpcEnv;(3)Dispat...

2020-04-29 17:50:24 187

原创 Spark-Core启动脚本流程|Master和Worker得启动脚本过程|找到Master和Worker的程序执行入口原因

进入启动命令查看start-all.sh脚本信息查看spark-config.sh加载信息查看start-master.sh脚本信息spark-daemon.sh查看bin/spark-class添加一行打印,查看信息echo "${CMD[@]}" >> ./test.log启动bin/master-all.sh 查看test.log/o...

2020-04-29 13:27:03 148

原创 Linux中用yum安装软件出现14: PYCURL ERROR 6 - “Couldn‘t resolve host ‘mirrorlist.centos.org‘“错误解决方法

错误[atguigu@hadoop102 ~]$ sudo yum install -y nc[sudo] password for atguigu: 已加载插件:fastestmirror, refresh-packagekit, security设置安装进程Determining fastest mirrorsCould not retrieve mirrorlist http:/...

2020-04-27 20:37:53 1072

原创 Spark-Streaming中DStream输出|使用外部文件系统来控制内部程序优雅关闭

DStream输出输出操作指定了对流数据经转化操作得到的数据所要执行的操作(例如把结果推入外部数据库或输出到屏幕上)。与RDD中的惰性求值类似,如果一个DStream及其派生出的DStream都没有被执行输出操作,那么这些DStream就都不会被求值。如果StreamingContext中没有设定输出操作,整个context就都不会启动。输出操作如下:(1)print():在运行流程序的驱...

2020-04-27 17:01:30 211

原创 Spark-Streaming中DStream得转换|无状态转换操作(transform、join)|有状态转换操作(updateStateByKey、WindowOperations)

DStream转换DStream上的操作与RDD的类似,分为Transformations(转换)和Output Operations(输出)两种,此外转换操作中还有一些比较特殊的原语,如:updateStateByKey()、transform()以及各种Window相关的算子。无状态转化操作无状态转化操作就是把简单的RDD转化操作应用到每个批次上,也就是转化DStream中的每一...

2020-04-27 16:00:59 1583

原创 Spark-Streaming从Kafka中采集数据进行WordCount

进程启动创建topic// 查看topic[atguigu@hadoop102 kafka_2.11-0.11.0.2]$ bin/kafka-topics.sh --zookeeper hadoop102:2181 --list// 创建名为“atguigu”得topic,分区数为3,副本数为2[atguigu@hadoop102 kafka_2.11-0.11.0.2]$ bin/...

2020-04-26 20:57:45 172

原创 Spark-Streaming中得Kafka数据源|Kafka 0-8 Receive模式|Kafka 0-8 Direct模式|Kafka 0-10 Direct模式

版本选型ReceiverAPI:需要一个专门的Executor去接收数据,然后发送给其他的Executor做计算。存在的问题,接收数据的Executor和计算的Executor速度会有所不同,特别在接收数据的Executor速度大于计算的Executor速度,会导致计算数据的节点内存溢出。DirectAPI:是由计算的Executor来主动消费Kafka的数据,速度由自身控制。(高版本后,...

2020-04-25 18:41:51 410 1

原创 Spark-Streming中DStream创建|RDD队列|自定义数据源

RDD队列测试过程中,可以通过使用ssc.queueStream(queueOfRDDs)来创建DStream,每一个推送到这个队列中的RDD,都会作为一个DStream处理。代码实现val rddDStream: InputDStream[Int] = ssc.queueStream(rdds, oneAtATime= false)自定义数据源需要继承Receiver,并实现...

2020-04-25 12:01:13 335

原创 Spark-Streaming概述|Streaming架构图|背压机制(反压机制)|WordCount案例实操|WordCount解析

Spark-Streaming1. Spark Streaming是用于流式数据处理的模块。2. Spark Streaming支持的数据输入源很多,例如:Kafka、Flume、Twitter、ZeroMQ和简单的TCP套接字等等。3. 数据输入后可以用Spark的高度抽象原语如:map、reduce、join、window等进行运算。而结果也能保存在很多地方,如HDFS,数据库等。4...

2020-04-25 10:51:41 353

原创 Spark-SQL之Hive交互|使用内嵌Hive|外部Hive应用|运行Spark SQL CLI|代码中操作Hive

Hive交互Apache Hive 是 Hadoop 上的 SQL 引擎,Spark SQL编译时可以包含 Hive 支持,也可以不包含。包含 Hive 支持的 Spark SQL 可以支持 Hive 表访问、UDF (用户自定义函数)以及 Hive 查询语言(HiveQL/HQL)等。需要强调的一点是,如果要在 Spark SQL 中包含Hive 的库,并不需要事先安装 Hive。一般来说...

2020-04-24 14:40:18 839

原创 Spark-SQL之JDBC与MySQL交互|从JDBC读取数据|向JDBC写数据

MySQLSpark SQL可以通过JDBC从关系型数据库中读取数据的方式创建DataFrame,通过对DataFrame一系列的计算后,还可以将数据再写回关系型数据库中。如果使用spark-shell操作,可在启动shell时指定相关的数据库驱动路径或者将相关的数据库驱动放到spark的类路径下。bin/spark-shell --jars mysql-connector-java-5....

2020-04-24 11:40:36 486

原创 Spark-SQL数据的加载与保存|加载数据|保存数据|默认数据源

通用的加载和保存spark.read.load 是加载数据的通用方法df.write.save 是保存数据的通用方法加载数据直接加载数据spark.read.json("/opt/module/spark-local/examples/src/main/resources/people.json").showformat指定加载数据类型spark.read.fo...

2020-04-24 11:21:59 572

原创 Spark-SQL用户自定义函数|自定义UDF|自定义求平均数UDAF(弱类型、强类型)

UDF输入一行,返回一个结果。在Shell窗口中可以通过spark.udf功能用户可以自定义函数。UDAF输入多行,返回一行。强类型的Dataset和弱类型的DataFrame都提供了相关的聚合函数, 如 count(),countDistinct(),avg(),max(),min()。除此之外,用户可以设定自己的自定义聚合函数。通过继承UserDefinedAggregateFu...

2020-04-22 17:05:16 724

原创 Spark-SQL在IDEA中创建SparkSQL程序|DF风格编程|RDD转换为DF

POM<dependencies> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.11</artifactId> <version...

2020-04-22 16:11:56 244

原创 Spark-SQL中DataFrame与DataSet的互操作|DataFrame转为DataSet|Dataset转为DataFrame|RDD、DataFrame和DataSet之间的关系

DataFrame转为DataSet使用as方法,转成Dataset,这在数据类型是DataFrame又需要针对各个字段处理时极为方便。在使用一些特殊的操作时,一定要加上 import spark.implicits._ 不然toDF、toDS无法使用。val df = spark.read.json("/opt/module/spark-local/examples/src/main/r...

2020-04-22 14:38:07 1485

原创 Spark-SQL中DataSet|创建DataSet|DataSet强类型体现|RDD转换为DataSet|DataSet转换为RDD

DataSetDataSet是具有强类型的数据集合,需要提供对应的类型信息。在实际使用的时候,很少用到把序列转换成DataSet,更多是通过RDD来得到DataSet创建DataSet使用样例类序列创建DataSet使用基本类型的序列创建DataSetDataSet强类型体现RDD转换为DataSetSparkSQL能够自动将包含有样例类的RDD转换成D...

2020-04-22 14:18:04 384

原创 Spark-SQL中的DataFrame|SQL风格语法|DSL风格语法|RDD转换为DataFrame|手动转换|样例类反射转换|DataFrame转换为RDD

DataFrameSpark SQL的DataFrame API 允许我们使用 DataFrame 而不用必须去注册临时表或者生成SQL表达式。DataFrame API 既有transformation操作也有action操作,DataFrame的转换从本质上来说更具有关系, 而 DataSet API 提供了更加函数式的 API创建DataFrame在Spark SQL中Spark...

2020-04-22 11:40:46 463

原创 Spark-SQL概述、特点|DataFrame简介|DataSet简介|SparkSession

Spark-SQLSpark SQL是Spark用于结构化数据(structured data)处理的Spark模块。与基本的Spark RDD API不同,Spark SQL的抽象数据类型为Spark提供了关于数据结构和正在执行的计算的更多信息。在内部,Spark SQL使用这些额外的信息去做一些额外的优化,有多种方式与Spark SQL进行交互,比如: SQL和DatasetAPI。...

2020-04-22 10:10:24 928

原创 Spark输出打印日志log4j.properties配置|输出日志只打印WARN以上

将日志打印等级配置一下## Licensed to the Apache Software Foundation (ASF) under one or more# contributor license agreements. See the NOTICE file distributed with# this work for additional information r...

2020-04-21 20:20:15 962

原创 Spark中用IDEA创建快捷键

点击File->Settings…->Editor->Live Templates->output->Live Template选择scala测试

2020-04-21 20:10:04 385

原创 SparkCore项目实战|Top10热门品类|Top10热门品类中每个品类的Top10活跃Session统计|页面单跳转化率统计

数据分析本项目的数据是采集电商网站的用户行为数据,主要包含用户的4种行为:搜索、点击、下单和支付。(1)数据采用_分割字段(2)每一行表示用户的一个行为,所以每一行只能是四种行为中的一种。(3)如果搜索关键字是null,表示这次不是搜索(4)如果点击的品类id和产品id是-1表示这次不是点击(5)下单行为来说一次可以下单多个产品,所以品类id和产品id都是多个,id之间使用逗号...

2020-04-21 17:19:03 1593 1

原创 Spark广播变量

广播变量广播变量:分布式共享只读变量。在多个并行操作中(Executor)使用同一个变量,Spark默认会为每个任务(Task)分别发送,这样如果共享比较大的对象,会占用很大工作节点的内存。广播变量用来高效分发较大的对象。向所有工作节点发送一个较大的只读值,以供一个或多个Spark操作使用。比如,如果你的应用需要向所有节点发送一个较大的只读查询表,甚至是机器学习算法中的一个很大的特征向量,...

2020-04-21 11:35:16 324

原创 Spark累加器|系统累加器|自定义累加器

累加器累加器:分布式共享只写变量。(Task和Task之间不能读数据)累加器用来对信息进行聚合,通常在向Spark传递函数时,比如使用map()函数或者用 filter()传条件时,可以使用驱动器程序中定义的变量,但是集群中运行的每个任务都会得到这些变量的一份新的副本,更新这些副本的值也不会影响驱动器中的对应变量。如果我们想实现所有分片处理时更新共享变量的功能,那么累加器可以实现我们想要...

2020-04-21 11:16:52 306

原创 Spark中键值对RDD数据分区|数据读取与保存|Text文件|Json文件|Sequence文件|Object对象文件

键值对RDD数据分区Spark目前支持Hash分区和Range分区,和用户自定义分区。Hash分区为当前的默认分区。分区器直接决定了RDD中分区的个数、RDD中每条数据经过Shuffle后进入哪个分区和Reduce的个数。(1)只有Key-Value类型的RDD才有分区器,非Key-Value类型的RDD分区的值是None(2)每个RDD的分区ID范围:0~numPartitions-1,...

2020-04-20 20:02:08 565

原创 Spark持久化中得RDD Cache缓存|RDD CheckPoint检查点|检查点添加到HDFS|缓存和检查点得区别

RDD Cache缓存RDD通过Cache或者Persist方法将前面的计算结果缓存,默认情况下会把数据以序列化的形式缓存在JVM的堆内存中。但是并不是这两个方法被调用时立即缓存,而是触发后面的action时,该RDD将会被缓存在计算节点的内存中,并供后面重用。代码实现源码分析默认的存储级别都是仅在内存存储一份。在存储级别的末尾加上“_2”表示持久化的数据存为两份缓存有可能丢...

2020-04-20 16:18:03 368

原创 Spark中Stage任务划分源码跟踪并简单解析|任务提交阶段|Stage划分阶段|Task提交阶段

作业提交阶段进入到collect()方法中进入到runJob()方法中继续进入runJob()方法中进入到runJob()方法中进入到runJob()中进入到dagScheduler.runJob()方法中进入到submitJob()方法中进入到post方法中找到eventQueue的实现类(ct...

2020-04-20 14:54:36 250

原创 Spark中RDD的血缘关系|依赖关系|窄依赖|Job调度|Stage任务划分|查看job、stage、task个数界面

血缘关系代码实现依赖关系代码实现窄依赖窄依赖表示每一个父RDD的Partition最多被子RDD的一个Partition使用,窄依赖我们形象的比喻为独生子女。宽依赖宽依赖表示同一个父RDD的Partition被多个子RDD的Partition依赖,会引起Shuffle,总结:宽依赖我们形象的比喻为超生。依赖小结具有宽依赖的 transformations 包...

2020-04-20 12:11:31 1053 1

原创 Spark闭包检查|闭包检查源码跟踪|序列化解决方案|序列化框架

错误闭包检查进入foreach方法进如clean方法进入clean()中进入clean()中,判断是否是闭包 文件名包含"$anonfun$"在ClosureCleaner.scala的clean()中继续执行,到了ensureSerializable()方法进入serialize(func)方法,找到实现Javaseriali...

2020-04-18 17:01:08 493

原创 Spark行为算子中的aggregate()|fold()|countByKey()统计每种key的个数|save相关算子

aggregate()代码实现fold()代码实现countByKey()统计每种key的个数1)函数签名:def countByKey(): Map[K, Long]2)功能说明:统计每种key的个数代码实现save相关算子1)saveAsTextFile(path)保存成Text文件(1)函数签名(2)功能说明:将数据集的元素以textfile的形式保存...

2020-04-18 15:24:32 425

原创 Spark行为算子中count()算子|first()算子|take()算子

count()返回RDD中元素个数1)函数签名:def count(): Long2)功能说明:返回RDD中元素的个数first()返回RDD中的第一个元素1)函数签名: def first(): T2)功能说明:返回RDD中的第一个元素take()返回由RDD前n个元素组成的数组1)函数签名: def take(num: Int): Array[T]2)功能说明:返...

2020-04-18 14:49:44 1894

原创 Spark行动算子中的reduce()聚合|collect()以数组的形式返回数据集|foreach(f)遍历RDD中每一个元素

行动算子是触发了整个作业的执行。因为转换算子都是懒加载,并不会立即执行。reduce()1)函数签名:def reduce(f: (T, T) => T): T2)功能说明:f函数聚集RDD中的所有元素,先聚合分区内数据,再聚合分区间数据。代码实现collect()1)函数签名:def collect(): Array[T]2)功能说明:在驱动程序中,以数组Arr...

2020-04-18 14:35:31 1119

原创 Spark算子案例实操|广告的TOP3

需求分析代码实现具体代码 // 1.创建SparkConf并设置App名称 val conf: SparkConf = new SparkConf().setAppName("SparkCoreTest").setMaster("local[*]") //2.创建SparkContext,该对象是提交Spark App的入口 val sc: SparkConte...

2020-04-18 12:03:47 2135

原创 Spark中sortByKey()按照K进行排序|mapValues()只对V进行操作|join()连接 将相同key对应的多个value关联在一起|cogroup() 类似全连接

sortByKey代码实现mapValues()代码实现join()代码实现cogroup()操作两个RDD中的KV元素,每个RDD中相同key中的元素分别聚合成一个集合。代码实现

2020-04-18 11:27:30 369

原创 Spark中combineByKey()转换结构后分区内和分区间操作|四个ByKey算子区别

combineByKey()代码实现案例分析区别

2020-04-18 10:19:43 213

原创 Spark中RDD数据从文件中读取后创建分区源码解析

代码实现源码解析-在textFile中,第二个参数为minPartitions表示最小分区数,注意是最小,不是实际最终确定的分区数 -在实际分区的过程中,会根据处理的文件的总大小(字节数)和最小分区数进行相除运算 >余数为0,那么最小分区数,就是实际的分区数 >余数不为0,那么实际分区数 大于 最小分区数...

2020-04-17 20:34:28 343

原创 Spark中RDD数据从集合中创建默认分区源码解析

2.3.1 默认分区源码(RDD数据从集合中创建) 没有指定分区数,默认分区规则: -从内存的集合中读取数据创建RDD默认分区规则 取决于分配给应用的CPU核数 -从外部文件中读取数据创建RDD默认分区规则 用分配给应用的CPU核数和2取最小值 math.min(defaultPar...

2020-04-17 20:18:56 172

原创 Spark中RDD特性|RDD编程模型|集合创建RDD的两种方式|数据集创建RDD

RDD特性A list of partitions : 多个分区,分区可以看成是数据集的基本组成单位对于 RDD 来说, 每个分区都会被一个计算任务处理, 并决定了并行计算的粒度。用户可以在创建 RDD 时指定 RDD 的分区数, 如果没有指定, 那么就会采用默认值。 默认值就是程序所分配到的 CPU Core 的数目.每个分配的存储是由BlockManager 实现的, 每个分区都会被逻辑...

2020-04-17 20:01:34 287

原创 Spark中aggregateByKey()按照K处理分区内和分区间逻辑| foldByKey()算子

aggregateByKey()代码实现案例解析foldByKey()分区内和分区间相同的aggregateByKey()代码实现

2020-04-17 17:02:38 313

原创 Spark中Key-Value类型|partitionBy()按照Key重新分区|reduceByKey()按照K聚合V|groupByKey()按照K重新分组

代码实现Shuffle过程(落盘)需要把所有哦分区的数据拿到一起处理,会有shuffle自定义分区器源码分析class HashPartitioner(partitions: Int) extends Partitioner { require(partitions >= 0, s"Number of partitions ($partitions) canno...

2020-04-17 16:17:06 1673

saprk_ch_es_realtime的MDB创建表语句,自动生成db数据jar包

基于spark + ch + es 的一个spark实时数仓,其中做日活为采集日志,接下来为需要业务数据处理接下来的数据,那么MDB中的表生成语句包括插入语句,每日生成的业务数据jar包为此资源

2020-09-21

面向对象.xmind

面向对象的xmind思维导图,包含了类与类的成员、面向对象三大特性、关键字三个部分,对于正在学java基础的同学来说是一个比较好的整理,能够帮助回忆或者帮助自己整理脑中琐碎的知识点

2019-12-16

springmvc_day01.rar

springmvc+mybatis+spring整合的一个比较常规性的模板

2019-08-15

spring_test.rar

spring的简单描述,spring的IOC的了解,spring的DI的了解,spring的注入方式,注入类型,spring的第一次项目开发演示,spring的配置文件信息

2019-08-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除