自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(107)
  • 收藏
  • 关注

原创 SparkStreaming的窗口

目录1.window(windowLength, slideInterval)2.countByWindow(windowLength,slideInterval)3.countByValueAndWindow4.reduceByWindow(func, windowLength,slideInterval)窗口函数,就是在DStream流上,以一个可配置的长度为窗口,以一个可配置的速率向前移动窗口,根据窗口函数的具体内容,分别对当前窗口中的这一波数据采取某个对应的操作算子。需要注意的是窗口长度,和窗

2021-01-05 15:19:12 399

原创 Kafka集群搭建

前提:搭建zookeeper集群一、解压上传kafka安装到到一台机器解压并改名tar -zxvf kafka_2.11-2.0.0.tgzmv kafka_2.11-2.0.0 kafka二、修改环境变量三台机器修改环境变量vi /etc/profileexport KAFKA_HOME=/opt/kafkaexport PATH=$PATH:$KAFKA_HOME/bin/:$PATH使修改生效source /etc/profile三、修改配置文件在kafka安装目录中

2020-12-24 19:41:45 267 1

原创 kafkaStreaming窗口

Hopping Time Window (滑动窗口,有重合部分数据)该窗口定义如下图所示。它有两个属性,一个是Window size,一个是Advance interval。Window size指定了窗口的大小,也即每次计算的数据集的大小。而Advance interval定义输出的时间间隔。一个典型的应用场景是,每隔5秒钟输出一次过去1个小时内网站的PV或者UV。package kafka_stream;import org.apache.kafka.clients.consumer.Co.

2020-12-21 20:04:55 731

原创 kafkaStreaming

目录一、无业务流程二、求和sumkafka-Streaming即将一个topic的数据经过业务处理后传输到另一个topic中一、无业务流程创建topickafka-topics.sh --zookeeper 192.168.184.40:2181 --create --topic mystreamin --partitions 3 --replication-factor 1kafka-topics.sh --zookeeper 192.168.184.40:2181 --create -

2020-12-21 19:38:37 482

原创 hiveserver2启动脚本

hiveServer2和metaStore启动脚本参数为:start、stop、restart、statusstart:启动 metastore 和 hiveserver2 服务stop:关闭 metastore 和 hiveserver2 服务restart:重启 metastore 和 hiveserver2 服务status:查看 metastore 和 hiveserver2 服务状态#!/bin/bashHIVE_LOG_DIR=$HIVE_HOME/logsmkdir -p $

2020-12-21 19:20:50 711

原创 Spark Streaming自定义采集器

目录一、Spark 自定义Receiver二、自定义Receiver三、代码实现四、测试一、Spark 自定义ReceiverSparkStreaming 能够接收任意类型的流式数据,不单单只是内建的Flume,Kafka,Kinesis,files,sockets等等。当然若要支持此种数据,则需要开发者自定义程序来接受对应的数据源。本文以下部分就是要实现自定义的Receiver二、自定义Receiver 声明一个receiver类,通常需要继承原有的基类,在这里需要继承自Receiver,该基类有

2020-12-21 19:06:18 275 1

原创 Spark Streaming几种数据采集方式

目录一、添加依赖二、从端口采集三、从文件采集四、从kafka中拉取一、添加依赖创建maven项目添加依赖包<dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka_2.11</artifactId> <version>2.0.0</version> </dependency> &l

2020-12-21 18:48:14 448

原创 kafka java API 的使用

目录一、创建队列二、引入依赖三、Producer的API四、Consumer的APIKafka包含四种核心的API:  1、Producer API支持应用将数据流发送到Kafka集群的主题    2、Consumer API支持应用从Kafka集群的主题中读取数据流    3、Streams API支持数据流从输入主题转化到输出主题    4、Connect API支持实现持续地从一些源系统或应用划入Kafka或者从Kafka推入一些源系统或应用的接口。我们这里主要讨论Producer

2020-12-07 20:06:48 333

原创 kafka常用命令

这里记录一下kafka常用命令行,我这里安装版本是2.11-2.0.0创建topic参数:partitions:分区数,可以显式指定,如果不指定则会使用broker(server.properties)中的num.partitions配置的数量虽然增加分区数可以提供kafka集群的吞吐量,但是过多的分区数或者是单台服务器上的分区数过多,会增加不可用及延迟的风险。因为过多的分区数,意味着需要打开更多的文件句柄、增加点到点的延时、增加客户端的内存消耗。分区数也限制了consumer的并行度,即限制了

2020-12-02 20:06:27 120

原创 kafka简介及安装配置

目录一、消息队列二、kafka简介三、安装配置kafkakafka安装包提取码: ci74一、消息队列相关概念:消息队列中间件是分布式系统中非常重要的中间件,主要解决 应用耦合,异步消息,流量削峰 等问题。实现 高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。使用场景如:异步处理: 如用户注册后,发送注册邮件,再发送注册短信。应用解耦: 如用户下单后,订单系统需要通知库存系统。流量削峰:如秒杀活动,一般会因为流量过大,导致流量暴增。日志处理:解决大量日志传输问题

2020-12-02 19:26:05 87

原创 Flume安装

flume安装目录一、安装Flume二、安装nc三、安装telnet测试四、案例安装包及测试文件提取码: ktc2一、安装Flume1.压缩包拉入opt目录中2.解压flume到opttar -zxvf flume-ng-1.6.0-cdh5.14.0.tar.gz3.重命名flumemv apache-flume-1.6.0-cdh5.14.0-bin/ flume4.切换到flume的confcd flume/conf5.拷贝一份flume-env.sh.template,重

2020-11-30 21:46:42 358

原创 Spark GraphX的图形数据分析(四)

连通分量连通分量是一个子图,其中任何两个顶点通过一条边或一系列边相互连接,其顶点是原始图顶点集的子集,其边是原始图边集的子集 def connectedComponents(): Graph[VertexID, ED]示例:数据准备//reference.txt1,2,friend1,3,sister2,4,brother3,2,boss4,5,client1,9,friend6,7,cousin7,9,coworker8,9,father10,11,colleague1

2020-11-26 18:38:41 282

原创 Spark GraphX的图形数据分析(三)

pageRank(PR)算法用于评估网页链接的质量和数量,以确定该网页的重要性和权威性的相对分数,范围为0到10从本质上讲,PageRank是找出图中顶点(网页链接)的重要性GraphX提供了PageRank API用于计算图的PageRank//tol:收敛时允许的误差,越小越精确, 确定迭代是否结束的参数//resetProb:![随机重置概率 def pageRank(tol: Double, resetProb: Double = 0.15): Graph[Double, Doub

2020-11-26 16:36:36 148

原创 Spark Graphx图形数据分析(二)

目录一、属性算子二、结构算子三、join算子一、属性算子属性算子包含mapVertices,mapEdges,mapTriplets,作用类似于RDD的map操作//操作顶点属性 def mapVertices[VD2](map: (VertexId, VD) => VD2): Graph[VD2, ED]//操作边属性 def mapEdges[ED2](map: Edge[ED] => ED2): Graph[VD, ED2]//操作整个三元组 def mapTripl

2020-11-26 15:47:46 135

原创 Spark Graphx图形数据分析(一)

目录一、为什么需要图计算二、图的基本概念三、图的术语四、图的经典表示法五、Spark GraphX 简介六、GraphX核心抽象七、图信息八、示例一、为什么需要图计算许多大数据以大规模图或网络的形式呈现许多非图结构的大数据,常会被转换为图模型进行分析图数据结构很好地表达了数据之间的关联性二、图的基本概念图是由顶点集合(vertex)及顶点间的关系集合(边edge)组成的一种网状数据结构– 通常表示为二元组:Gragh=(V,E)– 可以对事物之间的关系建模应用场景– 在地图应用中

2020-11-25 09:45:19 570

原创 Spark日志分析--json格式、传统格式日志

目录一、Json文件日志1.1 清洗数据1.2 rdd转dataFrame格式1.3 提取'cm'中信息1.4 提取'event'中信息1.5 按'en'中的类型分类生成表1.6 将生成的表保存到hive库1.7 查看hive中的表二、传统格式日志2.1 数据清洗2.2 拆分url2.3 数据保存到MySQL库点击下载样例文件提取码: vjex一、Json文件日志使用数据 op.log文件注:spark-shell界面操作1.1 清洗数据数据样例展示:cm ap et id"cm":{"l

2020-11-23 14:35:38 463

原创 Spark SQL操作外部数据源

Spark SQLSpark SQL是Spark的核心组件之一(2014.4 Spark1.0)能够直接访问现存的Hive数据提供JDBC/ODBC接口供第三方工具借助Spark进行数据处理提供了更高层级的接口方便地处理数据支持多种操作方式:SQL、API编程支持多种外部数据源:Parquet、JSON、RDBMS等SparkContextSQLContextSpark SQL的编程入口HiveContextSQLContext的子集,包含更多功能SparkSession(S

2020-11-18 12:30:50 127

原创 Spark装载数据源

Spark可以加载好多种外部数据源的格式,例如:csv,text,json,parquet等。我们在这里讲解下csv和json格式。一、装载CSV数据源文件链接提取码: t4n2文件预览使用SparkContextdef main(args: Array[String]): Unit = { val conf = new SparkConf().setMaster("local").setAppName("scvdemo") val sc = new SparkContext(

2020-11-12 15:56:30 143

原创 Spark分布式计算机原理

目录一、RDD的依赖关系二、DAG工作原理三、Spark Shuffle过程四、RDD优化一、RDD持久化二、RDD共享变量三、RDD分区设计四、数据倾斜一、RDD的依赖关系Lineage:血统、遗传1.RDD最重要的特性之一,保存了RDD的依赖关系2.RDD实现了基于Lineage的容错机制依赖关系1.宽依赖一个父RDD的分区被子RDD的多个分区使用2.窄依赖一个父RDD的分区被子RDD的一个分区使用宽依赖对比窄依赖:1.宽依赖对应shuffle操作,需要在运行时将同一个父RD

2020-11-12 14:10:22 203

原创 Spark RDD算子(十二) 保存操作saveAsTextFile,saveAsSequenceFile,saveAsObjectFile,saveAsHadoopFile 等

目录一、saveAsTextFile二、saveAsSequenceFile三、saveAsObjectFile四、saveAsHadoopFile五、saveAsHadoopDataset六、saveAsNewAPIHadoopFile七、saveAsNewAPIHadoopDataset一、saveAsTextFile用于将RDD以文本文件的格式存储到指定路径。codec参数可以指定压缩的类名。val rdd = sc.makeRDD(1 to 10,2)rdd.saveAsTextFile(

2020-11-12 14:08:50 1235

原创 Spark RDD算子(十一) RDD 分区操作 mapPartitions、mapPartitionsWithIndex、glom

一、mapPartitionsmapPartition可以倒过来理解,先partition,再把每个partition进行map函数适用场景如果在映射的过程中需要频繁创建额外的对象,使用mapPartitions要比map高效。比如,将RDD中的所有数据通过JDBC连接写入数据库,如果使用map函数,可能要为每一个元素都创建一个connection,这样开销很大,如果使用mapPartitions,那么只需要针对每一个分区建立一个connection。下面的例子java实现,把每一个元素平方S

2020-11-12 14:01:34 248

原创 Spark RDD算子(十) PairRDD的Action操作 countByKey、collectAsMap

目录一、countByKey二、collectAsMap一、countByKey以RDD{(1, 2),(2,4),(2,5), (3, 4),(3,5), (3, 6)}为例 rdd.countByKey会返回{(1,1),(2,2),(3,3)}即1个以1为key,2个以2为key,3个以3为keyscala版本val rdd = sc.makeRDD(List((1,2),(2,4),(2,5),(3,4),(3,5),(3,6)))rdd.countByKey.foreach(printl

2020-11-11 09:35:45 122

原创 Spark RDD算子(九) 基本的行动算子操作

目录一、first二、take三、collect四、 count五、countByValue六、 reduce七、aggregate八、fold九、top一、first返回第一个元素scalaval rdd=sc.makeRDD(List(1,2,3))rdd.first() // 1javaJavaRDD<Integer> rdd = sc.parallelize(Arrays.asList(1,2,3));Integer num = rdd.first; // 1

2020-11-11 09:31:21 174

原创 Spark RDD算子(八) subtractByKey、 join、rightOuterJoin、leftOuterJoin

目录一、subtractByKey二、 join三、rightOuterJoin四、leftOuterJoin一、subtractByKey类似于subtract,删掉 rdd 中键与 rdd2 中的键相同的元素二、 join可以把rdd,rdd2中的相同的key给连接起来,类似于sql中的join操作三、rightOuterJoin对两个 rdd 进行连接操作,类似于sql中的右外连接,存在的话,value用的Some, 不存在用的None,具体的看上面的图和下面的代码即可四、leftOut

2020-11-11 09:11:23 431

原创 Spark RDD算子(七) groupByKey、cogroup

目录一、groupByKey二、cogroup一、groupByKeygroupByKey会将RDD[key,value] 按照相同的key进行分组,形成RDD[key,Iterable[value]]的形式, 有点类似于sql中的groupbygroupByKey不能传算法,消耗性能,优化尽量使用reduceByKey或combineByKey例:对学生的成绩进行分组scala版本val conf=new SparkConf().setMaster("local[2]").setAppName

2020-11-11 09:04:14 141

原创 Spark RDD算子(六) reduceByKey、foldByKey、sortByKey

目录一、reduceByKey二、foldByKey三、sortByKey一、reduceByKey接收一个函数,按照相同的key进行reduce操作,类似于scala的reduce的操作scala版本例1:对二元组进行reduceByKeyval rdd1=sc.makeRDD(List((1,2),(1,3),(4,6),(4,8),(5,1)))val rdd2=rdd1.reduceByKey((x,y)=>{println(x+"+"+y);x+y})rdd2.collect.

2020-11-11 08:56:08 330

原创 Spark RDD算子(五) CombineByKey

CombineByKey聚合数据一般在集中式数据比较方便,如果涉及到分布式的数据集,可以使用combineByKey, 这个是各种聚集操作的鼻祖def combineByKey[C](createCombiner : Function1[V, C], mergeValue : Function2[C, V, C], mergeCombiners : Function2[C, C, C]) : RDD[scala.Tuple2[K, C]]combineByKey涉及三个方法:createComb

2020-11-11 08:47:30 344

原创 Spark RDD算子(四) mapToPair、flatMapToPair

目录一、mapToPair二、flatMapToPair一、mapToPair将每一行的第一个单词作为键,1 作为value创建pairRDDscala版本scala没有mapToPair,使用map就能完成val conf=new SparkConf().setMaster("local[2]").setAppName("maptopair")val sc=new SparkContext(conf)val lines=sc.textFile("D:/text/sample.txt")va

2020-11-11 08:39:36 2174

原创 Spark RDD算子(三) distinct、union、intersection、subtract、cartesian

目录一、distinct二、union三、intersection四、subtract五、cartesian一、distinctdistinct用于去重,此方法涉及到混洗,操作开销很大scala版本val conf=new SparkConf().setMaster("local[2]").setAppName("distinctdemo")val sc=new SparkContext(conf)val rdd=sc.makeRDD(List("a","b","a","c"))rdd.di

2020-11-10 20:49:15 118

原创 Spark RDD算子(二) filter、map、flatMap

filter、map、flatMap一、filter二、map三、flatMap一、filter过滤算子scala版本val conf = new SparkConf().setMaster("local[2]").setAppName("filterscala")val sc=new SparkContext(conf)val rdd = sc.textFile("in/sample.txt")rdd.filter(_.contains("zks")).collect.foreach(pr

2020-11-10 20:08:25 361

原创 Spark RDD算子(一) parallelize、textFile

RDD创建算子一、parallelize二、textFile一、parallelize调用SparkContext 的 parallelize(),将一个存在的集合,变成一个RDD,这种方式试用于学习spark和做一些spark的测试scala版本scala的parallelize有两个参数,第一个是一个Seq集合,第二个是分区数,如果没有则会是默认分区数scala版本可以选择makeRDD替换parallelize,java版本则没有val rdd = sc.parallelize(List(

2020-11-10 20:01:51 2651

原创 Spark基础及架构

为什么使用SparkMapReduce编程模型的局限性繁杂只有Map和Reduce两个操作,复杂的逻辑需要大量的样板代码处理效率低:Map中间结果写磁盘,Reduce写HDFS,多个Map通过HDFS交换数据任务调度与启动开销大不适合迭代处理、交互式处理和流式处理Spark是类Hadoop MapReduce的通用并行框架Job中间输出结果可以保存在内存,不再需要读写HDFS比MapReduce平均快10倍以上Spark优势速度快基于内存数据处理,比MR快100个数量

2020-11-04 16:07:38 304

原创 Intellij IDEA--Maven创建Spark工程

Maven创建Spark工程一、创建Maven项目二、添加依赖三、编写Spark源代码一、创建Maven项目创建quickstart的maven的项目:编写组名和项目名:修改Maven的安装目录点击完成二、添加依赖在pom.xml中添加依赖,选择import-change根据当前使用的jdk和spark版本选择修改版本号<!--修改jdk版本号--><properties> <project.build.sourceEnc

2020-11-03 18:45:22 1410

原创 spark安装

一、前提安装jdk版本号:scala scala-2.11.12spark spark-2.4.5传送链接提取码:w2xv二、安装scala环境上传scala安装包到opt目录下解压:tar -zxvf scala-2.11.12.tgz重命名:mv scala-2.11.12 scala配置系统环境变量:export SCALA_HOME=/opt/scalaexport PATH=$SCALA_HOME/bin:$PATH编辑完成后:source /etc

2020-10-30 14:32:18 198

原创 scala--Array的函数

Array数组是一种可变的、可索引的数据集合。在Scala中用Array[T]的形式来表示Java中的数组形式 T[]Array提供的方法++合并数组,返回一个新的数组var a=Array(1,2)var b=Array(3,4)var c=a++b++:合并数组,类型以右边为主 注:用于可变数组var a=Array(1,2)var b=Array(3,4)var c=a++:bvar d=b++:a+:在集合前面增加元素var a=List(1,2

2020-10-29 17:25:07 714

原创 scala JDBC连接Mysql数据库

scala连接数据库一、在mysql创建表结构二、导入依赖包三、代码部分一、在mysql创建表结构create table student(id int primary key auto_increment,name varchar(255),age int)插入一组测试数据insert into student(name,age) values("张三",21),("李四",25)二、导入依赖包可以直接传入jar包,maven项目可以导入依赖<dependency>

2020-10-29 14:26:25 337

原创 scala--部分函数及偏函数

部分函数部分应用函数(Partial Applied Function)是缺少部分参数的函数,是一个逻辑上概念。def add(a:Int, b:Int, c:Int) = a+b+c , 当调用add的时候,如果不提供所有的参数,或者只提供某些参数时,比如add _ //提供所有参数add(3, _: Int, _:Int) //提供一个参数这样就生成了所谓的部分应用函数。例1:def add(a:Int,b:Int,c:Int)={ println(a+b+c)

2020-10-27 16:52:30 100

原创 scala--型变

scala--型变一、类型边界二、协变三、逆变四、不变一、类型边界在Scala中,类型参数可以有一个类型边界约束类型上界:将类型限制为另一种类型的子类T<:A 表示类型变量T应该是类型A的子类A是具体类型,T是泛型类型下界:将类型声明为另一种类型的超类T>:A 表示类型变量T应该是类型A的超类A是具体类型,T是泛型二、协变class Covariant[+T]{ }对于两种类型 A 和 B,如果 A 是 B 的子类型,那么 Covariant[A] 就是 Covaria

2020-10-26 17:25:46 171

原创 scala--特质

scala--特质一、特质(trait)二、混入特质(mixin)三、特质与抽象类的选择一、特质(trait)Scala中没有接口(interface)的概念特质用于在类之间共享程序接口和字段,类似Java接口特质是字段和方法的集合,可以提供字段和方法实现类和单例对象都可以扩展特质(extends)特质不能被实例化,因此没有构造参数,类似Java接口特质使用“trait”关键字定义实现特质中的方法使用“override”二、混入特质(mixin)当某个

2020-10-26 16:22:08 145 1

原创 scala--伴生类和伴生对象

scala--伴生单例对象(object)伴生单例对象(object)Scala的类中无法定义静态成员,即无static关键字。如何像Java一样表达类的静态成员变量、成员方法与静态代码块?Scala解决方案:单例对象使用“object”关键字声明,可包含变量、方法与代码定义单例对象中的成员变量、成员方法通过单例对象名直接调用单例对象第一次被访问时初始化,并执行全部代码块单例对象不能new,且无构造参数程序入口main()方法必须定义在单例对象中单例对象与同名类定义在同一文件中时形成

2020-10-26 16:02:54 2314

空空如也

空空如也

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

TA关注的人

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