自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

大数据跟我学i

记录自己成长历程~

  • 博客(136)
  • 资源 (1)
  • 收藏
  • 关注

原创 Maven的继承与模块及其多模块部署示例

概述在项目开发中,一个项目比较大,通常将项目进行拆分,方便项目维护、升级等操作。拆分方式按照软件分层进行拆分例如:web、service、dao、domain、common按照模块进行拆分例如:order、user…Maven通过继承与模块对拆分进行支持创建父项目为父项目创建多个子项目每个子项目就一个模块父项目和子项目通过继承体现父子关系分析(多模块部署示例)创建父项目:Maven-Parent创建子项目webservicedaodomia

2021-10-18 18:18:11 419 5

原创 Flink原理之TaskSlot And Slot Sharing

文章目录TaskSlot(任务槽)Slot Sharing(槽共享)TaskSlot(任务槽)每个TaskManager是一个JVM的进程,TaskSlot是TaskManager中资源分配的最小单位,每个TaskManager能够处理的最大任务数由TaskSlot决定。Flink将每个进程的内存划分到了slot中,内存被划分到不同的slot有以下好处:TaskManager最多能同时并发执行的子任务(Subtask)可以通过TaskSolt数量来控制每个TaskSolt都独占一个内存空间

2021-05-12 10:50:04 829

原创 Flink原理之角色分工

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码

2021-05-11 23:51:44 466 1

原创 Flink之Standalone—独立集群模式(开发测试环境使用)

文章目录执行流程安装执行流程client客户端提交任务给JobManagerJobManage负责给执行该任务分配计算所需资源JobManager分发任务给TaskManager执行TaskManager定期会向JobManager汇报状态信息,并在计算完成后返回计算结果安装集群规划服务器: node1(Master + Slave): JobManager + TaskManager服务器: node2(Slave): TaskManager服务器: node3(Slave

2021-05-10 11:21:29 518

原创 Flink-On-Yarn

文章目录为什么使用Flink On YarnFlink On Yarn提交任务执行流程Flink On Yarn的两种模式Session模式Per-Job(Job分离模式)Flink On Yarn环境设置准备环境测试为什么使用Flink On YarnYarn的资源可以按需使用,提高集群的资源利用率Yarn的任务有优先级,根据优先级运行作业基于Yarn的调度系统,能自动化处理每个角色的Failover(容错)JobManager进程和TaskManager进程都由Yarn NodeMana

2021-05-07 09:09:35 248

原创 Flink之local本地模式(学习测试使用)

文章目录原理操作测试原理操作下载安装包链接: https://pan.baidu.com/s/1c9iKA5pY6k-8LzfAuFC7MA 密码: r5wg–来自百度网盘超级会员V4的分享上传flink-1.12.0-bin-scala_2.12.tgz到node1的指定目录解压tar -zxvf flink-1.12.0-bin-scala_2.12.tgz修改权限chown -R root:root /export/server/flink-1.12.0创

2021-05-07 08:20:32 543

原创 StructuredSreaming-流去重

说明Spark中的批数据去重很简单,直接对所有数据进行df.dropDuplicates("列名1","列名2")流式数据去重需要保存历史数据的状态才可以做的去重,而StructuredStreaming的状态管理是自动的所以StructuredStreaming的流式数据去重和批处理一样。案例需求对网站用户日志数据,按照userId和eventTime、eventType去重统计数据如下:{"eventTime": "2016-01-10 10:01:50","eventType": "

2021-05-05 15:23:53 207

原创 StructedStreaming-基于事件时间的窗口计算

时间分类事件时间:事件产生的时间摄入时间:事件到达流系统的时间处理时间:事件被流系统处理的时间注:在实际开发中一般都要基于事件时间进行窗口计算,因为事件时间更能代表事件的本质。例如:2021.10.1 23:59:50的订单,到2021.10.2 00:00:10 才被系统处理,如果不支持事件时间那么会出现统计错误。API基于事件时间进行窗口计算import spark.implicits._val words = ... // streaming DataFrame of

2021-05-05 14:29:53 598

原创 StructuredSreaming-operation

文章目录概述分类DSLSQL概述StructuredSreaming它支持数据帧/数据集上的大多数常见操作,我们之前学到的对RDD、对DataFram、对DataSet的操作都可以在StructuredSreaming上使用分类DSLimport org.apache.spark.SparkContextimport org.apache.spark.sql.{DataFrame, Dataset, Row, SparkSession}object wordCount_DSL { def

2021-05-03 15:19:29 117

原创 StructuredStreaming-File

文章目录准备工作代码准备工作在项目下创建目录input/persons创建文件:file1.csv、file2.csv、file3.csv、file4.csv添加以下内容:file1.csv:添加以下内容jack1;23;runningjack2;23;runningjack3;23;runningbob1;20;swimmingbob2;20;swimmingtom1;28;footballtom2;28;footballtom3;28;footballtom4;28;fo

2021-05-03 15:14:27 129

原创 StructuredStreaming-Rate(测试学习使用)

import org.apache.spark.SparkContextimport org.apache.spark.sql.{DataFrame, Dataset, Row, SparkSession}/** * Author itcast * Desc 演示StructuredStreaming的Source-Rate */object Demo02_Source_Rate { def main(args: Array[String]): Unit = { //TODO 0.

2021-05-03 15:08:51 197

原创 StructuredStreaming-Socket

文章目录概述Socket通常用于日常学习时作为数据源使用,需要在linux系统上安装nc端口数据发送工具,并输入:nc -lk 9999向9999端口发送数据。代码import org.apache.spark.SparkContextimport org.apache.spark.sql.{DataFrame, Dataset, Row, SparkSession}object Socket { /** * Author itcast * Desc 演示StructuredS

2021-05-02 15:26:58 171

原创 StructedStreaming概述

文章目录SparkStreaming的不足SparkStreaming的不足基于微批处理,延迟高不能做到真正的实时计算DStream基于RDD,不直接支持SQL流批处理的API应用层不统一流用的是DSteam,底层是RDD批用的是DataFram、DataSet、RDD不支持EventTime(事件时间)EventTime:事件真正发生的时间PorcessTime处理时间:事件被流系统处理的时间IngestionTime摄入事件:事件到达流系统的时间列举不适用的场景

2021-05-02 14:59:53 600

原创 数据结构之队列

文章目录概念特点队列的实现方式概念队列是一种首受限的线性表,它是一种先进先出,后进后出的数据结构。特点只允许在一端进行插入(入队)操作,在另一段进行删除(出队)操作插入的一端叫队尾,删除的一段叫队首队列的实现方式使用顺序表实现队列使用链表实现队列’...

2021-04-29 17:51:28 125

原创 SparkStreaming之状态更新

文章目录概念案例概念状态更新指的是从socket中接收的数据做WordCount后得到的结果能对历史结果进行累加的一种操作。batch:指的是一个批次的数据updateFn:用于对最新数据与历史数据进行操作的函数案例编写代码监听node1节点中的9999端口,并对端口中拉取到的单词进行wordcountimport org.apache.spark.streaming.dstream.{DStream, ReceiverInputDStream}import org.apache.spar

2021-04-27 22:38:47 373

原创 分布式SQL引擎之ThriftServer服务和beeline

文章目录概述启动ThriftServer服务使用Beeline连接(类似Hive中beeline客户端)测试概述Spark Thrift Server将Spark Applicaiton当做一个服务运行,提供Beeline客户端和JDBC方式访问,与Hive中HiveServer2服务一样的。注:Spark Thrift JDBC/ODBC Server 依赖于HiveServer2服务(依赖JAR包),所有要想使用此功能,在编译Spark源码时,支持Hive Thrift。启动Thrift

2021-04-27 21:39:16 252

原创 数据结构之栈

概念栈是一种线性结构,只不过它是一种受限的数据结构,它只允许数据在一端进出,通常是先进后出,后进先出的数据结构。栈的基本操作栈的判空操作:isEmpty()求栈的长度:getSize()取栈顶元素操作:peek()入栈操作:push(x)出栈操作:pop()栈的实现方式使用顺序表实现栈使用链表实现栈使用顺序表实现栈需求1. 栈的判空操作:isEmpty() --对应Array的isEmpty()2. 求栈的长度:getSize() --对应Array的getSize()

2021-04-27 21:20:08 929

原创 SparkSQL的基本数据存储格式

文章目录Spark中所有组件的数据格式DataFrame和DataSet详解DataFrameDataSetSpark中所有组件的数据格式SparkCore的数据格式:RDDSparkStreaming的数据格式:DStream,底层是RDDSparkSQL的数据格式:DataFrame和DataSet,底层是RDDDataFrame和DataSet详解DataFrameDataFrame = RDD - 泛型 + Schema约束(指定了字段名和类型) + SQL操作 + 优化Dat

2021-04-25 21:25:53 622

原创 SparkSQL基本概述

文章目录基本概述SparkSQL与SparkCore数据对比基本概述SparkSQL与SparkCore数据对比SparkCore优缺点:优点:灵活,可以使用底层的API完成很复杂的业务缺点:有一定的学习成本/入门门槛SparkSQL对于一些数据科学家/数据库管理员/DBA,要求他们为了做一个非常简单的查询,写一大堆代码,明显是一件非常麻烦的事情,所以使用常见的SQL很方便。优缺点:优点:入门门槛低,只要会英文单词/简单语法规则就可以写缺点:只能做一些简单的业务,复杂业务实现

2021-04-25 20:47:13 394

原创 SparkStreaming之WordCount

文章目录需求准备工作案例代码需求准备工作在node01上安装nc命令(nc是natcat的简称,原来是用来设置路由器,我们可以利用它向某个端口发送数据)yum install -y nc向9999端口发送数据nc -lk 9999案例代码import org.apache.spark.streaming.{Seconds, StreamingContext}import org.apache.spark.streaming.dstream.{DStream, Receiver

2021-04-24 23:06:50 111

原创 Spark Streaming数据的基本传输单位_DStream

DStream的基本概念概述Dstream(Discretized Stream)是Spark Streaming数据的基本传输单位。它表示一个连续的数据流,这个数据流可以是原始的数据输入流,也可以是将原始的数据输入流通过转换生成已处理的数据输入流特点Spark Streaming对流数据按秒/分等时间间隔进行微批划分,每个微批就是一个RDDDStream由一系列连续的RDD组成,每个RDD都包含来自特定间隔的数据DStream本质上就是一系列时间上连续的RDD对DStream进行操作因

2021-04-24 22:47:05 556

原创 Spark操作外部数据源之Mysql数据源

将RDD中数据写入到Mysql中实际开发中常常将分析结果RDD保存至MySQL表中,使用foreachPartition函数;此外Spark中提供JdbcRDD用于从MySQL表中读取数据。调用RDD#foreachPartition函数将每个分区数据保存至MySQL表中,保存时考虑降低RDD分区数目和批量插入,提升程序性能。范例演示:将词频统计WordCount结果保存MySQL表tb_wordcount。建表USE db_test ;CREATE TABLE `tb_wordcount` (

2021-04-24 21:05:08 251

转载 Spark操作外部数据源之Hbase数据源

文章目录HBase Sink(下沉)概述Spark可以从HBase表中读写(Read/Write)数据,底层采用TableInputFormat和TableOutputFormat方式,与MapReduce与HBase集成完全一样,使用输入格式InputFormat和输出格式OutputFoamt。HBase Sink(下沉)概述将Spark中计算的结果数据下沉到Hbase中注:回 顾 MapReduce 向 HBase 表 中 写 入 数 据 , 使 用 TableReducer

2021-04-24 20:33:10 510

原创 Spark Streaming基本概述

文章目录概述SparkStreaming在Spark框架中的位置特点数据处理流程核心计算思想常见流式计算模式Spark Streaming 核心计算思想概述它是构建可伸缩的容错流应用程序的一种Spark流SparkStreaming在Spark框架中的位置SparkStreaming是Spark生态系统当中一个重要的框架,它建立在Spark Core之上(依赖Spark Core)特点使用简单容错性好和spark无缝集成数据处理流程SparkStreaming是一个基于Spa

2021-04-21 23:46:01 441

原创 Spark内核原理之standalone集群的Job提交执行流程

文章目录流程图流程图解释Driver启动创建scsc向CM注册申请资源CM找Worker分配资源,启动ExecutorExecutor等待Task提交构建DAGDAG Scheduler划分StageTask Scheduler提交Task/TaskSet注销

2021-04-21 20:32:00 86

原创 Spark内核之基本名词

文章目录目标你需要理解每个名词对应的组件或程序是用来干嘛的,有什么意义。基本名词Application:应用,就是程序员编写的Spark代码,如WordCount代码Driver:驱动程序,就是用来执行main方法的JVM进程,里面会执行一些Drive端的代码,如创建SparkContext,设置应用名,设置日志级别…SparkContext:Spark运行时的上下文环境,用来和ClusterManager进行通信的,并进行资源的申请、任务的分配和监控等ClusterManag

2021-04-21 18:49:50 140

原创 Spark内核原理之DAG和Stage

文章目录DAGStageDAG概述有一个有向图无法从任意顶点出发经过若干条边回到该点,则这个图是一个有向无环图(DAG图)。Spark的DAG:就是spark任务/程序执行的流程图DAG的开始:从创建RDD开始DAG的结束:到Action结束注:一个Spark程序中有几个Action操作就有几个DAG在Spark中,由于计算会有先后顺序则就会受制于某些任务比另一些任务较早执行的限制那就必须对任务进行排队,形成一个队列的任务集合,消除限制这个队列的任务集合就是DAG图,每一个顶点就

2021-04-21 09:26:13 524

原创 Spark内核原理之RDD之间的依赖关系

文章目录宽窄依赖宽依赖窄依赖为什么需要宽窄依赖宽窄依赖ShuffleDependency:宽依赖NarrowDependency:窄依赖宽依赖概述父RDD的一个分区会被子RDD的多个分区所依赖特点一对多:一个父RDD对应多个子RDD应用场景例如:RDD的reduceByke()、join()窄依赖概述父RDD的一个分区只会被子RDD的一个分区所依赖特点一对一:一个父RDD对应一个子RDD应用场景例如RDD的map()、union()、join()注:一个

2021-04-20 23:16:43 259

原创 数据结构之线性表

文章目录基本概念线性表的存储结构线性表的特点线性表的基本操作基本概念线性表,就是将数据排成像一条长线一样的结构,数组,链表,栈,队列都 是线性表结构,线性表上的数据最多只有前后两个方向,下面以一幅图的形式来展现一下线性表结构补充:与这种线性结构对应的就是非线性结构,比如后续要学习的数,堆,图等,在这些非线性数据结构 中,数据之间并不是简单的前后关系,如下图:线性表的存储结构线性表在计算机中可以用顺序存储和链式存储两种存储结构来表示:顺序存储结构的线性表:顺序表链式存储结构的线性表

2021-04-20 09:42:40 247

原创 数据结构的基本概述(作用与实际意义)

文章目录基本概念为什么要学习数据结构基本概念数据结构指的是在逻辑结构上,例如数组、集合,在物理存储结构上,就是在计算机中的数据的组织方式算法:就是操作数据的方法,即如何操作数据效率更高,更节省资源。注:这只是抽象的定义,我们来举一个例子,你有一批货物需要运走,你是找小轿车来 运还是找卡车来运? 这就是数据结构的范畴,选取什么样的结构来存储;至于你货物装车的时候是把货物堆放在一起还是分 开放这就是算法放到范畴了,如何放置货物更有效率更节省空间。数据结构和算法看起来是两个东西, 但是我们为什么要

2021-04-20 08:28:33 1722

原创 Scala之文件读取与写入

文章目录读取文件数据按行读取按字符读取写入数据读取文件数据在Scala语言的 Source单例对象中 中, 提供了一些非常便捷的方法, 从而使开发者可以快速的从指定数据源(文本文件, URL地址等)中获取数据, 在使用 Source单例对象 之前, 需要先导包, 即 import scala.io.Source .按行读取概述我们可以以 行 为单位, 来读取数据源中的数据, 返回值是一个 迭代器类型的对象 . 然后通过 toArray, toList 方 法, 将这些数据放到数组或者列表中即可.

2021-04-16 20:30:16 9742

原创 Scala之柯里化函数

文章目录Scala中常用的函数类型柯里化函数的功能及特点Scala中常用的函数类型匿名函数:没有名字的函数,只有参数列表和函数体(x:Int,y:Int) => {函数体}值函数:将匿名函数赋值给一个变量,取个名字val fname = (x:Int,y:Int) => {函数体}高阶函数:函数A的参数是一个函数,A就为高阶函数f1(f:A => B)柯里化函数的功能及特点概述柯里化(Currying)是指将原先接受多个参数的方法转换为多个只有一

2021-04-16 11:18:30 190

转载 Scala之隐式转换和隐式参数介绍

文章目录概述分类隐式转换概述隐式转换和隐式参数是Scala中非常有特色的功能,也是Java等其他编程语言没有的功能。我们可以很方便地利用隐式转换来丰富现有类的功能。在后续编写Akka并发编程, Spark, Flink程序时都会经常用到它们。分类隐式转换概述指用implicit...

2021-04-16 10:44:50 236

原创 Scala之提取器(extractor)

文章目录概述格式案例概述我们之前已经使用过Scala中非常强大的模式匹配功能了,通过模式匹配,我们可以快速获取样例类对象中的成员变量值。例如:// 1. 创建两个样例类 case class Person(name:String, age:Int) case class Order(id:String) def main(args: Array[String]): Unit = { // 2. 创建样例类对象,并赋值为Any类型 val zhangsan:Any = Person("张

2021-04-15 11:42:21 235

原创 Scala之异常处理

文章目录概述捕获异常抛出异常概述来看看下面这一段代码:def main(args: Array[String]): Unit = { val i = 10 / 0 println("你好!") }报错:Exception in thread "main" java.lang.ArithmeticException: / by zero at ForDemo$.main(ForDemo.scala:3) at ForDemo.main(ForDemo.scala)执行程序,可以看到sca

2021-04-14 08:20:07 341

原创 Scala之正则表达式

文章目录概述格式案例一:效验邮箱是否合法案例二:过滤所有不合法邮箱案例三:获取邮箱运营商概述所谓的正则表达式指的是 正确的, 符合特定规则的式子 , 它是一门独立的语言, 并且能被兼容到绝大多数的编程语言中. 在scala中, 可以很方便地使用正则表达式来匹配数据。具体如下:Scala中提供了 Regex类 来定义正则表达式.要构造一个Regex对象,直接使用 String类的r方法 即可.建议使用三个双引号来表示正则表达式,不然就得对正则中的反斜杠进行转义.格式val 正则对象名 =

2021-04-13 17:15:36 2531

原创 Scala之偏函数

文章目录概述格式入门案例结合map函数使用概述偏函数提供了更简洁的语法,可以简化函数的定义。配合集合的函数式编程,可以让代码更加优雅。所谓的偏函数是指 被包在花括号内没有match的一组case语句 , 偏函数是PartialFunction[A, B]类型的的一个实例对象, 其中A代表输入参数类型, B代表返回结果类型.格式val 对象名 = { //这对大括号及其内部的一组case语句, 就组成了一个偏函数. case 值1 => 表达式1 case 值2 => 表达式2 c

2021-04-13 15:22:03 351

原创 Scala之Option类型

文章目录概述格式概述实际开发中, 在返回一些数据时, 难免会遇到空指针异常(NullPointerException), 遇到一次就处理一次相对来讲还是比较繁琐的. 在Scala中, 我们返回某些数据时,可以返回一个Option类型的对象来封装具体的数据,从而实现有效的避免空指针异常。格式概述Scala中,Option类型表示可选值。这种类型的数据有两种形式:Some(x) 表示实际的值None:表示没有值注:使用getOrElse方法,当值为None时可以指定一个默认值需

2021-04-13 14:59:54 292

原创 Scala之模式匹配

文章目录简单模式匹配类型匹配守卫(类似if else)简单模式匹配一个模式匹配包含了一系列选项,每个备选项都开始于关键字case。且每个备选项都包含了一个模式及一到多个表达式。箭头符号 => 隔开了模式和表达式。格式需要进行匹配的变量 match {case "常量1" => 表达式1case "常量2" => 表达式2case "常量3" => 表达式3case _ => 表达式4}执行流程1.先执行第一个case,看变量值和该case对应的常量值是

2021-04-12 21:14:46 150

原创 Scala映射Map和迭代器iterator

文章目录映射Map概述不可变Map可变Map迭代器iterator概述映射Map概述映射指的就是Map。它是由键值对(key, value)组成的集合。特点是: 键具有唯一性, 但是值可以重复. 在Scala中,Map也分为不可变Map和可变Map。不可变Map概述不可变Map指的是元素, 长度都不可变.语法方式一:通过箭头的方式实现val/var map = Map(键->值, 键->值, 键->值...) // 推荐,可读性更好方式二:通过小括号的方式实现

2021-04-08 18:23:41 437

【Mac-Git工具】Sourcetree最新版

【Mac-Git工具】Sourcetree最新版

2020-12-28

空空如也

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

TA关注的人

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