spark(scala)
文章平均质量分 89
ant_yi
这个作者很懒,什么都没留下…
展开
-
spark sql——6. spark sql操作hbase
目标:在hbase建一张表,使用spark sql操作它参考:https://blog.csdn.net/eyeofeagle/article/details/84571756https://blog.csdn.net/eyeofeagle/article/details/89943913hbase数据准备:进入hbase shell:[root@hadoo...原创 2019-05-30 23:10:22 · 3927 阅读 · 0 评论 -
scala——高阶函数:2. 柯里化
柯里化:把输入多个参数的函数变为输入1个参数的函数声明方式:1. 参数分开放在括号里scala> def f1(x: Int)(y: Int) = x*yscala> val curry = f1(2) _scala> curry(3)res1: Int = 62. 使用implicit固定值scala> def f2(x: Int)(...原创 2019-04-25 00:48:35 · 1374 阅读 · 0 评论 -
scala——高阶函数:1. 函数作为输入值
在数学和计算机科学中,高阶函数是至少满足下列一个条件的函数:接受一个或多个函数作为输入 输出一个函数scala> val arr = Array(1,2,3,4,5)arr: Array[Int] = Array(1, 2, 3, 4, 5)scala> val func = (x:Int) => x*xfunc: Int => Int = ...原创 2019-04-25 00:47:49 · 1486 阅读 · 0 评论 -
scala——常用操作:3. scala实现wordcount
原创 2019-04-25 00:46:48 · 1571 阅读 · 0 评论 -
scala——常用操作:2. 常用操作
ctrl+alt+V 自动创建变量名ctrl+alt+L 自动规范格式package test01object test {def main(args: Array[String]): Unit = {//创建一个listval list0 = List(2, 5, 9, 6, 7, 1, 8, 3, 4, 0)println(list0)//list每...原创 2019-04-25 00:44:51 · 1448 阅读 · 0 评论 -
scala——常用操作:1. lazy惰性操作
lazy定义的变量是惰性变量惰性变量是不可变变量,且只有在调用时才去执行package test01class test { }//只有在静态类object中才可以声明main方法object test1{def init(): Unit = {println("call init()")}def main(args: Array[String]): Unit ...原创 2019-04-25 00:44:16 · 1620 阅读 · 0 评论 -
scala——面向对象:4. 模式匹配
匹配字符串:package test01import scala.util.Random/*** 匹配字符串*/object test {def main(args: Array[String]): Unit = {val arr = Array("zhoudongyu","zhengshuang","guanxiaotong","yanzi")val name...原创 2019-04-25 00:41:20 · 1380 阅读 · 0 评论 -
scala——面向对象:3. 特质、抽象类、继承、重写
特质、抽象类、继承、重写特质:(trait)相当于java的接口。可以只声明变量,不赋值,但在调用时需要重写赋值可以只声明方法,不实现,但在调用时需要重写实现/*** 特质*/trait Flyable{//声明一个没有值的字段val distance: Int//声明一个没有实现的方法def fight: String//声明一个实现的方...原创 2019-04-25 00:40:18 · 1463 阅读 · 0 评论 -
SparkStreaming——实例4:窗口操作
窗口函数,window使用窗口长度和滑动间隔来计算,假设窗口长度为3s,滑动间隔为2s,每2s窗口滑动一次,旧数据就只剩最后1s的了,丢弃左边的2s数据,右边进入新的2s的数据,计算此时新的3秒钟的数据。滑动间隔默认等于批次间隔,如果要设置,滑动间隔必须是窗口间隔的整数倍。代码:使用窗口函数:import org.apache.spark.{HashPa...原创 2019-05-04 23:05:27 · 1264 阅读 · 0 评论 -
SparkStreaming——实例3:带状态操作
带状态操作,updateStateByKey实例1、实例2只是把这5s中产生的数据wordcount,也就是每5s统计一次这5s的数据,而如果我们需要统计从一开始到现在产生的数据,就需要updateStateByKeyupdateStateByKey操作,可以让我们为每个key维护一份state,并持续不断的更新该state。1、首先,要定义一个state,可以是任意的数据类...原创 2019-05-04 23:04:34 · 2232 阅读 · 0 评论 -
SparkStreaming——实例2:批处理目录
简单:使用textFileStream替代socketTextStream即可可以向目录不断添加文件查看结果import org.apache.spark.SparkConfimport org.apache.spark.streaming.{Seconds, StreamingContext}object test1 {def main(args: Array...原创 2019-05-04 23:03:42 · 1020 阅读 · 0 评论 -
spark GraphX——PageRank
代码:package org.apache.spark.graphx.learningimport org.apache.spark.SparkConfimport org.apache.spark.SparkContextimport org.apache.spark.graphx.Graph.graphToGraphOpsimport org.apache.spark.graph...原创 2019-05-05 22:10:17 · 811 阅读 · 0 评论 -
spark源码阅读——2. spark-submit流程
任务提交流程:几个重要的概念:Application:用户构建的spark应用程序,包括驱动程序Driver和在工作节点上运行的Executor代码Driver: 驱动程序,运行Application中的main函数并创建sparkcontext,sc是应用程序的入口Executor:工作节点上启动的进程,可以运行任务task,也可以在内存或磁盘中保存数据Task:任务,由Ex...原创 2019-05-20 22:53:31 · 354 阅读 · 0 评论 -
spark sql——5. spark sql操作mysql表
目标:1.jdbc到mysql,读mysql的表并load成dataframe2.对dataframe执行dsl、sql语句3.两张表的连接查询操作4.另存dataframe为表,保存到mysqlspark自带的案例在:/examples/src/.../sql/SQLDataSourceExample.scalajar包:jdbc的jar包为mysql...原创 2019-05-30 23:08:48 · 6300 阅读 · 0 评论 -
spark sql——2. 实例:spark sql操作hive表
hive表已经创建好了,详见: hive实例:搜狗用户搜索日志配置:1. 把core-site.xml和hive-site.xml复制到spark的conf目录下core-site.xml在hadoop的配置目录下,hive-site.xml在hive的配置目录下2. 把mysql-connector-java-5.1.47-bin.jar复制到spark的jars目录...原创 2019-05-30 23:06:38 · 10723 阅读 · 1 评论 -
spark源码阅读——1. 集群启动流程
启动流程:客户端执行启动命令:start-all.sh1. 首先启动Master节点(master),找到配置的slaves文件,获得需要启动的slave节点2. 然后启动Worker节点(slave1,slave2)3. Master节点要求Worker节点向Master发送注册信息(为什么要注册:Master需要掌握Worker节点的健康状态)4. Master收到注册...原创 2019-05-17 23:40:56 · 413 阅读 · 0 评论 -
spark源码阅读——0.构建spark源码阅读环境
构建spark源码阅读环境在idea中找类的快捷键:两下shiftspark源码地址:https://github.com/apache/spark先下载下来,找一个目录,执行命令:git clone http://github.com/apache/spark说白了就是下源码,放到idea里能看到就行,直接在https://github.com/apache...原创 2019-05-17 23:39:12 · 399 阅读 · 0 评论 -
运行spark——运行自带案例
run-example运行自带案例在spark的bin目录下执行:run-example + 类名./run-example org.apache.spark.examples.SparkPi还有其他的例子都在examples目录下原创 2019-05-17 23:36:51 · 3748 阅读 · 0 评论 -
spark源码阅读——6. 性能优化
spark性能优化1.数据序列化(serializer)spark提供两种序列化方式,一种是java序列化,另一种是Kryo序列化java序列化比较灵活,但速度较慢,为了方便,spark默认使用java,可以更改为Kryo对于大多数程序而言,Kryo序列化可以解决有关性能的大部分问题Kryo序列化机制的优点:(1)算子函数中使用的外部变量,在经过kryo序列化之后,会...原创 2019-05-22 17:15:08 · 289 阅读 · 0 评论 -
spark源码阅读——5. shuffle
shuffle是什么:分布式计算中,每个节点只计算部分数据,也就是只处理一个分片,那么要想求得某个key对应的全部数据,比如reduceByKey、groupByKey,那就需要把相同key的数据拉取到同一个分区,原分区的数据需要被打乱重组,这个按照一定的规则对数据重新分区的过程就是Shuffle(洗牌)。Shuffle是连接Map和Reduce之间的桥梁,描述的是数据从Map端到Redu...原创 2019-05-22 17:14:32 · 1122 阅读 · 0 评论 -
mllib——实例3:ALS算法
ALS 是 spark 的协同过滤算法,已集成到 Spark 的 mllib 库中数据ALStest.data来自/spark/data/mllib/als/test.dataimport org.apache.spark.mllib.recommendation.Ratingimport org.apache.spark.{SparkConf, SparkContext}import...原创 2019-05-13 10:14:17 · 852 阅读 · 0 评论 -
spark源码阅读——4. checkpoint
checkpoint步骤:1. 建立checkpoint存储路径scala> sc.setCheckpointDir("hdfs://master:9000/checkpoint0727")2. rdd1.cache()3. rdd1.checkpoint()最好先cache:阅读源码可以看到,在checkpoint的时候最好先进行cache,这样可以减少计算量...原创 2019-05-21 10:05:08 · 230 阅读 · 0 评论 -
spark源码阅读——3. cache和persist
缓存策略 cache和persist点进去cache,可以看到它调用了persist(),没有给参数,也就是默认的缓存级别,MEMORY_ONLY存储块block和partition关系rdd的运算是基于分区partition的,partition是逻辑上的概念,block是物理上的数据实体一个rdd的partition就对应一个storage模块的block...原创 2019-05-20 23:01:24 · 412 阅读 · 0 评论 -
SparkStreaming——实例1:批处理网络上的数据
目的:使用socketTextStream("192.168.0.160",9999)接收192.168.0.160的9999端口数据,并wordcount启动hdfs:start-all.sh使用netcat向192.168.0.160的9999端口传送数据启动netcat:nc -l -p 9999可以不断向端口传送数据,查看结果import org.a...原创 2019-05-04 23:02:53 · 1109 阅读 · 0 评论 -
SparkStreaming——原理
spark streaming可以从Kafka、Flume、HDFS、ZeroMQ、Twitter收集收据,从数据源获取数据之后,可以使用诸如map、reduce、join和window等高级函数进行复杂算法的处理。然后存储到HDFS、Databases(数据库)、Dashboards中。Kafka、Flume是日志收集系统,ZeroMQ消息系统,Twitter是一个接口。s...原创 2019-05-04 23:01:46 · 765 阅读 · 0 评论 -
mllib——实例2:KMeans(含源码分析)
算法:1. 选择k个簇中心,作为聚类中心 。2. 计算每个样本点到聚类中心的距离,将每个样品点分配到最近的聚类中心,形成k个簇。3. 计算每个簇的平均值,并将这个平均值作为新的聚类中心。4. 反复执行2、3步骤,直到旧质心和新质心的差异小于阈值或迭代次数达到要求为止。实例:在IDEA运行,如果是spark-shell命令行窗口,可使用:paste进入粘贴模式,注意...原创 2019-03-27 11:19:47 · 1937 阅读 · 0 评论 -
RDD、矩阵基础——3. 矩阵、向量(Breeze、BLAS)
MLlib库底层的Vector(向量)、Matrix(矩阵)运算使用了Breeze库和BLAS库。Breeze库提供了相应计算的接口(Linalg)。但是在MLlib里面同时也提供了Vector和Linalg等的实现。BLAS(线性代数运算库)广泛应用于高性能计算领域。一、Breeze库导入:import breeze.linalg._ import ...原创 2019-02-16 23:39:04 · 2441 阅读 · 0 评论 -
RDD、矩阵基础——2. RDD的统计操作
Statistics统计操作首先读取数据,原数据://以空格分割,读取数据val data_path = "file:/ipynotebook/pic_data.txt"val data = sc.textFile(data_path).map(_.split(" "))//里面的数据转成double类型val data0 = data.map(f =>...原创 2019-02-16 23:31:48 · 2178 阅读 · 0 评论 -
RDD、矩阵基础——1.RDD基础
mllib是spark的机器学习库依赖:mllib的底层实现采用数值计算库Breeze和基础线性代数库BLASrdd惰性计算:是为了提高效率,如果每次转换操作都运行一遍很消耗内存。所致转换操作只记录下来,等到动作操作再执行。RDD操作(scala):创建:val data = Array(1,2,3,4,5,6,7,8,9)val distDat...原创 2019-02-16 23:21:13 · 1895 阅读 · 0 评论 -
scala——面向对象:2. 构造器
构造器:主构造器:类名后面加参数列表辅助构造器:在主构造器内,添加参数,使用this定义主构造器:package test01class StructDemo (val name: String, var age: Int, faceValue: Int){//可以使用val、var修饰,没有val或var的无法访问}object StructDemo{def ...原创 2019-02-16 23:18:14 · 1368 阅读 · 0 评论 -
scala——基础语法:4.映射Map用法
1. Scala映射(Map)是一组键/值对的对象。任何值都可以根据键来进行检索。键在映射中是唯一的,但值不一定是唯一的。映射也称为哈希表。映射有两种,不可变的和可变的。可变对象和不可变对象之间的区别在于,当对象不可变时,对象本身无法更改。默认情况下,Scala使用不可变映射(Map)。如果要使用可变集合(Set),则必须明确导入scala.collection.mutable.Ma...原创 2019-02-16 23:17:04 · 2353 阅读 · 0 评论 -
scala——面向对象:1. 类与对象
声明类与对象:package test01/*** 声明类时不用加public关键字,默认就是public* 一个类文件可以声明多个类(多个object)*/class Person {//用val修饰的变量是只读的,相当于只有get方法,没有set方法val id: String = "100"//用var修饰的变量相当于既有get方法,也有set方法,下划线...原创 2019-02-16 23:16:25 · 1541 阅读 · 0 评论 -
scala——基础语法:3. 数组
数组:定义数组:var s = new Array[Int](10)即创建一个Int类型的长度为10的数组,可以不写new和类型,如:var s = Array("tom","jerry")s(0) //注意下标用的是小括号,因为中括号用来表示数组类型了可变数组 ArrayBuffer:Array是定长数组,而ArrayBuffer是可变数组。ArrayBuffe...原创 2019-02-16 23:15:32 · 1453 阅读 · 0 评论 -
scala——基础语法:2. 函数
1 库函数import scala.math._ import scala.math._2 函数定义def 函数名(参数)=(函数体)函数的定义用 def 和=,大括号可以不要,参数要指明类型(:Int)定义hello函数:scala> def hello(name:String)={| println("hello " + name)| }定义加法...原创 2019-02-16 23:14:30 · 1551 阅读 · 0 评论 -
scala——基础语法:1. 基础
数据类型:var x = 5 //变量val y = 8 //常量,不可更改var a,b = 3 //定义多个变量(a=3 b=3)可以不指定数据类型,也可以指定(注意大小写):var c = "hello" //不指定var c:String = "hello" //string类型var x:Int = 5 //int类型var x:Any = 5 //...原创 2019-02-16 23:13:38 · 1423 阅读 · 0 评论 -
运行spark——6. spark流程
启动流程:客户端执行启动命令:start-all.sh1. 首先启动Master节点(master),找到配置的slaves文件,获得需要启动的slave节点2. 然后启动Worker节点(slave1,slave2)3. Master节点要求Worker节点向Master发送注册信息(为什么要注册:Master需要掌握Worker节点的健康状态)4. Master收到注册...原创 2019-04-25 18:49:45 · 1388 阅读 · 0 评论 -
运行spark——7. RDD依赖、stage划分、checkpoint
RDD依赖:窄依赖:每一个父RDD的分区最多被子RDD的一个分区使用宽依赖:每一个父RDD的分区被多个子RDD分区依赖RDD依赖的作用:血统(Lineage)会记录RDD的元数据和转换行为,以便恢复丢失的分区。stage划分:DAG(有向无环图):RDD的一系列转换组成了DAG划分stage的目的是生成任务,每个stage对应一种任务,划分sta...原创 2019-04-25 22:19:20 · 1472 阅读 · 0 评论 -
运行spark——5. 实例:wordcount
IDEA代码:import org.apache.spark.{SparkConf, SparkContext}import org.apache.spark.SparkContext._object WordCount { def main(args: Array[String]): Unit = { val inputPath=args(0) val outputP...原创 2019-04-19 19:23:34 · 1802 阅读 · 0 评论 -
运行spark——4.sbt打jar包
sbt 是 scala 的编译工具安装:curl https://bintray.com/sbt/rpm/rpm > bintray-sbt-rpm.reposudo mv bintray-sbt-rpm.repo /etc/yum.repos.d/sudo yum install sbt验证:(会等很长时间)root@hadoop01 ~]# sbtsbt...原创 2019-04-19 19:19:06 · 2125 阅读 · 0 评论 -
运行spark——3.idea打jar包
原创 2019-04-19 19:14:27 · 1509 阅读 · 0 评论