
Spark
蒙面小生
这个作者很懒,什么都没留下…
展开
-
spark-33.spark机器学习_6_决策树
1.信息熵熵在信息论中代表随机变量“不确定度”的度量。一个离散型随机变量的熵H(X)定义为:直觉上,信息量等于传输该信息所用的代价,这个也是通信中考虑最多的问题。比如说:赌马比赛中,有4匹马{A,B,C,D},获胜概率分别为{1/2,1/4,1/8,1/8}。接下来,让我们将哪一匹马获胜视为一个随机变量X∈{A,B,C,D}。假定我们需要用尽可能少的二元问题来确定随机变量X的取值。例如:问题1:A获胜了吗?问题2:B获胜了吗?问题3:C获胜了吗?最后我们可以通过最多3个二元问题,来确定X的取原创 2020-06-29 16:38:27 · 304 阅读 · 0 评论 -
spark-32.spark机器学习_5_协同过滤算法
协同过滤算法主要用于推荐系统,推荐系统是信息过载所采用的措施,面对海量的数据信息,,从中快速推荐出符合用户特点的物品。一些人的“选择恐惧症”、没有明确需求的人。解决如何从大量信息中找到自己感兴趣的信息。解决如何让自己生产的信息脱颖而出,受到大众的喜爱。1.协同过滤要解决的问题根据用户已经评分物品,补充用户给物品评分表的空格的评分,供推荐系统使用。2.要解决的问题有了相似度的比较,那么比较多少个用户或者物品为好呢?一般会有基于固定大小的邻域以及基于阈值的邻域。具体的数值一般是通过对模型的评比分数进原创 2020-06-29 16:34:44 · 341 阅读 · 0 评论 -
spark-31.spark机器学习_4_K-Means聚类
聚类属于无监督学习,就是对大量未标注的数据集就,按数据的内在相似性将数据集划分为多个类别,使类别内的数据相似度较大而类别间的数据相似度较小。1.K-Means算法实现算法实现:未聚类的初始点集;随机选取两个点作为聚类中心;计算每个点到聚类中心的距离,并聚类到离该点最近的聚类中去;计算每个聚类中所有点的坐标平均值,并将这个平均值作为新的聚类中心;重复(3),计算每个点到聚类中心的距离,并聚类到离该点最近的聚类中去;重复(4),计算每个聚类中所有点的坐标平均值,并将这个平均值作为新的聚类中心。原创 2020-06-29 16:31:39 · 246 阅读 · 0 评论 -
spark-30.spark机器学习_3_频繁项集挖掘FPGrowth
1.FPGrowth 基本概念T*:代表一次购物项集:项的集合支持度:项出现的次数或者概率FPGrowth的目标是发现有那些项频繁在一起出现。2.挖掘过程1.构建FPTree2.根据数进行递归挖掘【子树没有分叉则停止】3.构建FPTree1.根据每一项出现的次数重新排列你的购物集。2.根据重新排列的购物集构造FPTree。【tree有一个空Root节点】4.挖掘步骤排列项集是根据出现次数从高往低排列,那么挖掘的时候是从低向高开始挖掘。先找到当前挖掘项的所有结点,然后顺次找到Ro原创 2020-06-29 16:28:30 · 407 阅读 · 0 评论 -
spark-29.spark机器学习_2_线性回归
线性回归是利用被称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。这种函数是一个或者多个被称为回归系数的模型参数的线性组合。1.一元线性回归找到一条直线能够最大程度上拟合二维空间中出现的点。2.多元线性回归如果自变量多余1个,那么就要求一个多元函数去拟合空间中的点。二元线性回归:n元线性回归:要求什么?要求使得所有点到这条线的误差最小。误差最小化:要求参数θ的最优解,使得所有点到这条线的误差最小。如果将y表示样本的真实值,h_θ (x)表示原创 2020-06-29 16:24:12 · 863 阅读 · 0 评论 -
spark-28.spark机器学习_1_引言
1.机器学习定义机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。通过算法使计算机能够模拟人类的判别能力。2.机器学习能干啥?模式识别、计算机视觉、数据挖掘、统计学习、语音识别、自然语言处理。传统学习:有监督、无监督学习,包括:回归、推荐、聚类、分类、挖掘。人工智能:深度学习、强化学习、迁移学习,包括:神经网络、卷积神经网络、AlphaGo。原创 2020-06-29 16:14:38 · 200 阅读 · 0 评论 -
spark-27.spark调优_5_Shuffle优化
spark.shuffle.file.bufferspark.shuffle.file.buffer默认值:32k参数说明:该参数用于设置shuffle write task的BufferedOutputStream的buffer缓冲大小。将数据写到磁盘文件之前,会先写入buffer缓冲中,待缓冲写满之后,才会溢写到磁盘。调优建议:如果作业可用的内存资源较为充足的话,可以适当增加这个参数的大小(比如64k),从而减少shuffle write过程中溢写磁盘文件的次数,也就可以减少磁盘IO次数,进原创 2020-06-29 15:50:59 · 153 阅读 · 0 评论 -
spark-26.spark调优_4_程序开发调优
避免创建重复的RDD需要对名为“hello.txt”的HDFS文件进行一次map操作,再进行一次reduce操作。也就是说,需要对一份数据执行两次算子操作。错误的做法:对于同一份数据执行多次算子操作时,创建多个RDD。这里执行了两次textFile方法,针对同一个HDFS文件,创建了两个RDD出来,然后分别对每个RDD都执行了一个算子操作。这种情况下,Spark需要从HDFS上两次加载hello.txt文件的内容,并创建两个单独的RDD;第二次加载HDFS文件以及创建RDD的性能开销,很明显是白白浪原创 2020-06-29 15:47:22 · 150 阅读 · 0 评论 -
spark-25.spark调优_3_spark资源配置
1.资源运行中的几种情况实践中跑的SparkJob,有的特别慢,查看CPU利用率很低,可以尝试减少每个executor占用的CPU core的数量,增加并行的executor数量,同时配合增加分片,整体上增加了CPU的利用率,加快数据处理速度。发现某个job很容易发生内存溢出,我们就增大分片数量,从而减少了每片数据的规模,同时还减少并行的executor数量,这样相同的内存资源分配给数量更少的executor,相当于增加了每个task的内存分配,这样运行速度可能慢了些,但是总比OOM强。数据量特别少原创 2020-06-29 15:41:12 · 275 阅读 · 0 评论 -
spark-24.spark调优_2_spark的数据倾斜
1.什么是数据倾斜数据倾斜指的是,并行处理的数据集中,某一部分(如Spark或Kafka的一个Partition)的数据显著多于其它部分,从而使得该部分的处理速度成为整个数据集处理的瓶颈。数据倾斜在spark中将导致两个严重的后果:数据倾斜直接会导致一种情况:Out Of Memory。运行速度慢。一个经验性的结论是:一般情况下,OOM的原因都是数据倾斜。2.如何定位数据倾斜数据倾斜一般会发生在Shuffle过程中,很大程度上是你使用了可能会触发Shuffle操作的算子:distinct原创 2020-06-29 15:36:13 · 207 阅读 · 0 评论 -
spark-23.spark调优_1_监控与调优方向
1.spark的监控1.任务运行的监控spark web ui spark内置应用运行监控工具。2.基础资源的监控Ganglia 分析集群的使用状况和资源瓶颈。Nmon 主机CPU、网络、磁盘、内存。Jmeter 系统实时性能监控工具。3.代码的监控Jprofile Java程序性能监控工具【所有基于JVM的都能被监控】2.spark的调优方向调优要点:数据倾斜、资源参数、Shuffle参数、程序开发、JVM GC的优化。...原创 2020-06-29 15:25:12 · 190 阅读 · 0 评论 -
spark-22.spark内核解析_2_Spark的脚本
1.集群管理脚本start-all.sh调用 start-master.sh CLASS=”org.spark.deploy.master.Master” 执行main(),并传入一些参数。调用 start-slave.sh CLASS=”org.spark.deploy.worker.Worker” 执行main(),并传入一些参数。stop-all.sh 类似。2.任务提交脚本spark-submit.shspark-class.sh org.apache.spark.deploy.Spa原创 2020-06-29 15:21:53 · 237 阅读 · 0 评论 -
spark-21.spark内核解析_1_maven标签与Spark的通信机制
1.Maven标签<denpendencies> 声明并引入依赖。<dependencyManangement> 仅声明依赖,不自动引入,需要用的时候需要手动引入。<pluginManagement> 仅声明插件,不自动引入,需要用的时候要手动引入。<plugins> 声明并引入插件<profiles> 通过选择不同的profile 来动态更改POM文件,一般用于适应不同的编译和部署环境。 <exclusions>原创 2020-06-29 14:58:36 · 189 阅读 · 0 评论 -
spark-20.sparkGraphx_2_图的转换
1.Graph的创建1.根据边和顶点来创建。def apply[VD: ClassTag, ED: ClassTag]( vertices: RDD[(VertexId, VD)], edges: RDD[Edge[ED]], defaultVertexAttr: VD = null.asInstanceOf[VD], edgeStorageLevel: StorageLevel = StorageLevel.MEMORY_ONLY, vert原创 2020-06-28 22:25:18 · 578 阅读 · 0 评论 -
spark-19.sparkGraphx_1_sparkGraphx概述
以前处理的数据都是以记录为中心,图计算以图的方式来展示数据,更多的考虑的是顶点和边之间的关系。spark graphx中采用RDPG Resilient Distributed Property Graphx(弹性分布式属性图)来进行抽象。1.关键抽象:1.顶点:RDD[(VertexId,VD)]VertexId是Long类型,表示顶点的ID(主键),VD表示类型参数,可以是任意类型,类似于RDD[T],表示的是该顶点的属性。VertexRDD[VD]继承了RDD[(VertexId, VD)]原创 2020-06-28 20:47:43 · 349 阅读 · 0 评论 -
spark-18.sparkStreaming_3_DStream的转换操作与输出
转换操作1.无状态转换map(func)flatMap(func)fileter(func)repartition(numPartitionts)union(otherStream)count()reduce(func)count()join(otherStream,[numTasks])cogroup(otherStream,[numTasks])transform(func)countByValue(func)reduceB原创 2020-06-27 15:41:10 · 323 阅读 · 0 评论 -
spark-17.sparkStreaming_2_DStream的输入
1.文件数据源监控目录下新生成的文件,将文件内容读成一个RDD,这个文件最好是mv进来的。import org.apache.spark.streaming._val ssc = new StreamingContext(sc,Seconds(5))val lineDStream = ssc.textFileStream("hdfs://master:9000/data")val words = lineDStream.flatMap(_.split(" "))val word2count =原创 2020-06-27 15:31:39 · 177 阅读 · 0 评论 -
spark-16.sparkStreaming_1_概述与简单使用
1.sparkStreaming概述spark streaming用于处理流式计算问题。能够和spark的其它模块无缝集成。它是一个粗粒度的框架,即只能对一批数据指定处理方法,核心是采用微批次架构。和storm采用的以条处理的不同。sparkStreaming会运行接收器来不断接收输入的数据流,然后根据程序配置时间,将时间范围内的所有数据打成一个RDD,发送给spark Core 去处理。依次来打成数据流的计算。spark Streaming 有它自己的抽象,叫DStream(Discretize原创 2020-06-27 15:23:42 · 153 阅读 · 0 评论 -
spark-15.sparkSQL_6_数据仓库
数据仓库,英文名称为Data Warehouse,可简写为DW或DWH。数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它出于分析性报告和决策支持目的而创建。 为需要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制。特点:数据仓库的数据是面向主题的;数据仓库的数据是集成的;数据仓库的数据是不可更新的,能追加但不能更改;数据仓库的数据是随时间不断变化的;发展阶段:简单报表阶段:解决一些日常的工作中业务人员需要的报表,以及生成一些简单的能够帮助领导进原创 2020-06-26 18:24:45 · 588 阅读 · 0 评论 -
spark-14.sparkSQL_5_sparkSQL的输入、输出
1.输入高级模式:spark.read.json(path) jdbc csv parquet //默认格式,列存储格式,hive。 orc table text textFile低级模式:spark.read.format(“json”).load(path) 如果不指定format,默认是parquet格式。2.输出高级模式:dataFrame/dataSet. json(path) jdbc csv parquet原创 2020-06-26 18:22:05 · 243 阅读 · 0 评论 -
spark-13.sparkSQL_4_集成hive
1.使用内置的hive【当前hive 1.2.1】注意:如果发现master节点有metastore_db出现,删除,然后启动客户端配置hdfs路径。bin/spark-shell --master spark://master:7077 --conf spark.sql.warehouse.dir=hdfs://master:9000/spark_warehouse将spark的数据仓库的路径配置到HDFS上,配置只需要在第一次启动时配置。2.使用外置的hive1)直接将hive conf 目原创 2020-06-26 18:19:03 · 142 阅读 · 0 评论 -
spark-12.sparkSQL_3_sparkSQL自定义函数
UDF函数通过spark.udf.register(“name”,func)来进行注册。使用select func() … 来直接调用。如:val peopleDF = spark.read.json("examples/src/main/resources/people.json")peopleDF.createOrReplaceTempView("people")spark.udf.register("add",(x:String)=>"A:"+x)spark.sql("select a原创 2020-06-26 18:16:45 · 310 阅读 · 0 评论 -
spark-11.sparkSQL_2_sparkSQL执行模式
1.DSL模式通过调用方法来是实现。如:dataFrame.select("name").showdataFrame.filter($"age">25).show2.SQL模式通过执行SQL。1)先创建一张表:一个sparkContext可以多次创建sparkSession。//Session内可访问,一个sparkSession结束后,表自动删除。dataFrame.createOrReplaceTempView 使用表名,不需要任何前缀。//应用级别内可访问,一个spark原创 2020-06-26 17:46:23 · 267 阅读 · 0 评论 -
spark-10.sparkSQL_1_sparkSQL概述与数据转换
1.sparkSQL概述sparkSQL是spark的一个模块,可以和RDD进行混合编程、支持标准的数据源、可以集成和替代Hive、可以提供JDBC\ODBC服务器功能。sparkSQL里面有两个新的数据抽象:DataFrame和DataSet。DataFrame:SQL操作主要涉及到表的操作,表是数据和schema组成的,所以可以认为DataFrame就是一张表 = RDD+Schema。DataFrame的执行效率比RDD要高,主要表现在定制化的内存管理和优化的执行引擎。DataFrame是原创 2020-06-26 17:43:41 · 216 阅读 · 0 评论 -
spark-9.sparkcore_6_实例练习
现有一份CDN数据,该数据的格式为:IP命中率响应时间请求时间请求方法请求URL请求协议状态码响应大小referer用户代理一条样例数据如下:100.79.121.48 HIT 33 [15/Feb/2017:00:00:46 +0800] "GET http://cdn.v.abc.com.cn/videojs/video.js HTTP/1.1" 200 174055 "http://www.abc.com.cn/" "Mozilla/4.0+(compatibl原创 2020-06-26 15:34:35 · 477 阅读 · 0 评论 -
spark-8.sparkcore_5_spark的输入输出
spark的输入输出1.文本文件的输入、输出1.sc.textFile(path) 文本文件的输入。2.rdd.saveAsTextFile(path) 文本文件的输出。2.JSON文件的输入、输出实质上是文本文件的输入、输出,需要在程序中手动进行编码与解码。3.CSV\TSVCSV逗号分割,TSV tab分割,文本文件输入、输出。4.SequenceFile文件输入、输出val sdata = sc.sequenceFile[Int,String](“hdfs://master:9000原创 2020-06-26 15:16:40 · 413 阅读 · 0 评论 -
spark-7.sparkcore_4_RRD的行动操作与统计函数
1.RDD的行动操作Action1 .reducedef reduce(f: (T, T) => T): T 如果最后不是返回RDD,那么就是行动操作。通过func函数聚集RDD中的所有元素,这个功能必须是可交换且可并联的。如:val rdd = sc.makeRDD(1 to 10)scala> rdd.reduce(_+_)res4: Int = 552.collectdef collect(): Array[T] 将RDD的数据返回到driver层。在驱动程序中,原创 2020-06-26 13:34:24 · 332 阅读 · 0 评论 -
spark-6.sparkcore_3_RDD的转换操作
本文给出了spark常用的一些转换操作,基于源码,对部分API做了使用范例。1.mapdef map[U: ClassTag](f: T => U): RDD[U]一对一转换。返回一个新的RDD,该RDD由每一个输入元素经过f函数转换后组成。如产生1-100的数据,并让每个元素乘以2:val rdd = sc.makeRDD(1 to 100)rdd.map(_*2).collect 或 rdd.map(x => x*2).collect2.filterdef filter原创 2020-06-26 11:37:12 · 167 阅读 · 0 评论 -
spark-5.sparkcore_2_RDD的创建与类型
1).从集合中创建RDD。方法1def makeRDD[T: ClassTag]( seq: Seq[T], numSlices: Int = defaultParallelism): RDD[T]standalone模式下的并行度defaultParallelism:conf.getInt(“spark.default.parallelism”, math.max(totalCoreCount.get(), 2))方法2 def parallelize[T: ClassTag](seq: Se原创 2020-06-26 09:34:48 · 138 阅读 · 0 评论 -
spark-4.sparkcore_1_RDD
1.RDD简介1.什么是RDD?RDD(Resilient Distributed Dataset)是spark为简化用户的使用,对所有的底层数据进行的抽象,以面向对象的方式提供了RDD很多的方法,通过这些方法来对RDD进行计算和输出。RDD是spark的基石,所有的上层模块全部由RDD实现。RDD是弹性分布式数据集。2.RDD具有以下特点不可变。对于所有的RDD的操作都将产生一个新的RDD。可分区。RDD是通过将数据进行分区保存的。弹性。RDD弹性的表现:存储的弹性:内存与磁盘的自动转换。原创 2020-06-18 22:40:52 · 144 阅读 · 0 评论 -
spark-3.基本使用
1.交互式窗口使用本地模式执行的交互式窗口[dendan@master spark-2.1.1-bin-hadoop2.7]$ bin/spark-shell执行测试程序:统计./LICENSE文件的单词个数。scala> sc.textFile("./LICENSE").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collectflatMap()将整体压平。flatMap(.split(" "))将整体压成一个类似数组的数据结构。原创 2020-06-18 18:02:33 · 2089 阅读 · 0 评论 -
spark-2.安装spark
1.从官网下载spark2.上传到master节点上修改权限:[root@master software]# chown dendan:dendan spark-2.1.1-bin-hadoop2.7.tgz解压:[root@master software]# tar -zxvf spark-2.1.1-bin-hadoop2.7.tgz -C /opt/module/切换账户:[root@master software]# su dendan切换目录:cd /opt/module原创 2020-06-08 17:54:55 · 213 阅读 · 0 评论 -
spark-1.机器配置
安装centos6.8主机名与IP配置主机名IPmaster192.168.1.111slave01192.168.1.112slave02192.168.1.113修改主机名vi /etc/sysconfig/networkHOSTNAME=主机名修改网络配置:vi /etc/sysconfig/network-scripts/ifcfg-eth0TYPE=EthernetName=eth0IPV4_FAILURE_FATAL=yesIPA原创 2020-06-08 17:50:46 · 317 阅读 · 0 评论 -
centos6.8安装 msyql5.5
今天在学习spark集成hive的过程中,hive需要与mysql配合使用。考虑到平时一般是将mysql安装配置在windows下,对linux下的mysql可能比较生疏,故以撰写博客的形式来强化mysql在linux下的安装配置。上传mysql离线包:使用SecureCRT将mysql-libs.zip 上传到/opt/software目录下。安装配置:解压到当前目录下。unzip mysql-libs.zip检查rpm包。rpm -qa|grep mysql发现有mysql-libs原创 2020-06-08 17:06:28 · 170 阅读 · 0 评论