![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spark
ThisIsNobody
这个作者很懒,什么都没留下…
展开
-
Spark LRU最近最少使用
1. 结合律 交换律结合律 (1 + 2) + 3 = 1 + (2 + 3)交换律 (1 + 2) + 3 = (2 + 3) + 12. LRU-Least Recently Used 页面置换算法A B C D E D F 物理块有4个ABACBADCBAEDCBDECBFDEC原创 2018-06-09 19:12:41 · 420 阅读 · 0 评论 -
Spark十 累加器与广播变量
两种类型的共享变量:累加器(accumulator)和广播变量(broadcast variable)共享变量是在Spark任务中使用的特殊类型变量累加器用来聚合信息1) 提供将工作节点的值累加到驱动器程序的语法2) 常见用途是调试时对作业执行过程的事件计数3) 工作节点的任务不能访问累加器的值,只有驱动器程序中可以访问4) 累加器的用法 > 驱动器中调用SparkContext.ac...原创 2018-07-07 12:53:14 · 196 阅读 · 0 评论 -
Spark2.3.1 API Dataset
org.apache.spark.sql.Dataset1 强类型集合2 对象可以做函数操作或者关系型操作3 DataFrame是Row类型的Dataset,即Dataset[Row]4 转化操作生成新的Dataset,行动操作执行计算并生成结果,是lazy的,只有行动操作才会触发计算5 Spark Catalyst Optimizer优化计算,将logical plan以并行,分布式的方式优化为...原创 2018-07-12 22:59:59 · 329 阅读 · 0 评论 -
Spark2.3.1 API RelationalGroupedDataset
org.apache.spark.sql.RelationalGroupedDataset1 最经常是由DataFrame的groupBy创建2 也可以由DataFrame的cube,rollup创建3 还可以由自身的pivot创建功能1 主要用来做agg函数计算2 还有一些常用的统计方法,如sum, count, min等...原创 2018-07-12 22:00:15 · 2321 阅读 · 0 评论 -
Spark2.3.1 API DataStreamReader
org.apache.spark.sql.streaming.DataStreamReader原创 2018-07-12 21:22:41 · 563 阅读 · 0 评论 -
Spark2.3.1 API SparkSession
类org.apache.spark.sql.SparkSession1 dataset和dataframe API的入口2 在REPL和databrick的notebooks环境中已经提前建立好了 对象org.apache.spark.sql.SparkSession1 为创建sparksession而创建一个builder 2 设置/获取/清除session3...原创 2018-07-18 21:40:34 · 731 阅读 · 0 评论 -
Spark九 读取和保存数据之Spark SQL的结构化数据,数据库和键值对存储
Spark SQL操作结构化和半结构化数据读取数据 对数据源执行SQL查询,返回Row对象组成的RDD,每个Row对象是一条记录,记录访问基于下标,每个Row都有一个get()方法1 Apache Hive > Hadoop的结构化数据源 > Spark中复制hive-site.xml,创建HiveContext对象,使用HiveQL查询表2 JSON > 半...原创 2018-07-04 23:33:37 · 609 阅读 · 0 评论 -
Spark八 读取和保存数据之文件格式与文件系统
Spark支持Hadoop MapReduce使用的InputFormat和OutputFormat接口访问数据,HDFS/HBase/S3/Cassandra等大部分文件格式和存储系统都支持这种接口三种数据源文件格式和文件系统 > 本地文件系统和分布式文件系统:NFS/HDFS/S3 > 文件格式:文本文件/JSON/SequenceFile/protocol buffe...原创 2018-07-04 23:19:35 · 3014 阅读 · 0 评论 -
Spark六 数据分区
分区1) Spark分布式程序中网络传输的通信代价很大,所以为了较少传输开销,需要控制RDD分区,和单节点的程序需要选择使用合适的数据结构一样,Spark程序需要选择合适的分区方式2) 只有数据集是基于键时,分区才会有用,Spark可以确保同一个组的键出现在同一个节点上,比如使用键的哈希值做模运算3) 如果不使用分区partitionBy(),则每次调用Join()等函数都对从来不会变化的数据重新...原创 2018-07-04 21:37:00 · 716 阅读 · 0 评论 -
Spark十一 编程进阶之分区数据操作,数值RDD操作和与外部程序交互
分区操作基于分区的操作避免为每个数据元素进行重复的配置工作,让代码只在RDD的每个分区运行一次数值RDD操作对数值RDD的统计操作,stats()会一次遍历计算所有统计操作的结果与外部程序间的管道1) 可以读写Unix标准流的任何语言,使用pipe()方法将RDD的元素从标准输入流以字符串形式读出,执行任何语言实现的操作后,把结果以字符串的形式写入标准输出流2) SparkContext.addF...原创 2018-07-07 13:22:58 · 313 阅读 · 0 评论 -
Spark十三 Spark调优和调试
1 SparkConf配置机制 1) SparkConf实例包含重载配置选项的字符串键值对,set()方法 2) 配置优先级:代码中set() > spark-submit设置 > 配置文件的值 > 系统的默认值2 执行部件:Jobs, Tasks, and Stages1) 任务内部流程从数据存储或已有RDD或数据混洗获取输入数据执行转化操作计算新的RDD,执行行动...原创 2018-07-07 19:29:15 · 225 阅读 · 0 评论 -
Spark MLlib(一) Guide
是什么?是Spark machine learning的库文件为什么?使实践ML简单且可扩展什么功能?1 ML算法:分类,回归,聚类,协同过滤2 特征:特征提取,转化,降维,选择3 管线:创建,评估,调谐ML管线4 持久化:保存和加载算法,models和管线5 公用工具:线性代数,统计学,data handling版本更新2.0之后主API是DataFrame_based API,RDD_base...原创 2018-07-15 20:26:27 · 174 阅读 · 0 评论 -
Spark2.3.1 Structured Streaming Programming Model
Part1 基础概念1 input data stream 当作 unbounded input table2 new data = new rows3 查询input table会产生result table4 每过一个trigger interval,添加新的row到Input table,并更新result table5 每次result table更新,写将更新的行写到...原创 2018-07-20 12:26:31 · 210 阅读 · 0 评论 -
Spark2.3.1 Structured Streaming Programming Guide
1 structured streaming是可扩展,容错性强的流处理引擎,建立在spark sql engine上2 spark sql engine在数据流不断到达时,会持续地增长式地运行数据流,并更新最终结果,数据流也像静态数据计算一样通过optimizer sql engine优化3 使用dataset, dataframe api做streaming aggregations, ...原创 2018-07-20 10:18:29 · 328 阅读 · 0 评论 -
Spark Window操作
Apache Flink的windowhttps://flink.apache.org/news/2015/12/04/Introducing-windows.html微软Azure的windowhttps://msdn.microsoft.com/zh-cn/azure/stream-analytics/reference/windowing-azure-stream-analyticsJL解释...原创 2018-07-13 07:50:07 · 734 阅读 · 0 评论 -
Spark十六 Spark Streaming之转化操作,输出操作,输入源
1 转化操作 > 无状态转化操作: 每个批次的处理不依赖之前批次的数据 > 有状态转化操作: 使用之前批次的数据或者中间结果计算当前批次的数据 (1) 基于滑动窗口的有状态转化操作 > 以一个时间阶段进行操作 > 窗口时长和滑动步长,是批次间隔的整数倍 (2) 追踪状态变化的转化操作 ...原创 2018-07-07 19:49:35 · 651 阅读 · 0 评论 -
Spark十五 Spark Streaming之架构和抽象,24/7不间断运行,性能考量
Spark Streaming使用离散化流(discretized stream)DStream作为抽象表示1) DStream是随时间推移而受到的RDD的序列,输入源可以是Flume,Kafka,或HDFS2) DStream支持两种操作 > 转化操作:生成新的DStream > 输出操作:把数据写入外部系统3) 检查点机制实现不间断工作1 架构和抽象1)...原创 2018-07-07 19:04:12 · 888 阅读 · 0 评论 -
Spark十二 集群运行
1 运行时架构1) 驱动器节点Driver 驱动器程序的两个功能 > 把用户程序转化为任务 (1) 驱动器程序把用户程序转为多个物理执行单元,称为任务 (2) 程序从输入数据创建一系列RDD,转化操作生成新的RDD,最后执行行动操作 (3) 由操作隐式创建逻辑有向无环图,驱动器运行时把DAG转为物理执行计划 (4) S...原创 2018-07-07 14:52:31 · 217 阅读 · 0 评论 -
Spark七 Pair RDD转化操作
Pair RDD: 提供并行操作各个键和跨节点重新进行数据分组的操作接口创建Pair RDD1) 把普通的RDD转化为Pair RDD使用map方法将lines划分为以首个单词为键,行内容为值的Pair RDDval pairs = lines.map(x => (x.split(" ")(0), x)2) 驱动器程序中创建Pair RDD调用SparkContext.parallelize...原创 2018-07-04 21:36:28 · 825 阅读 · 0 评论 -
scala.Predef$.refArrayOps([Ljava/lang/Object;)Lscala/collection/mutable/ArrayOps
将scala-sdk从2.12换为2.11File -> Project Structure -> Global libraries -> Remove SDK -> Rebuild.原创 2018-07-08 19:43:19 · 11514 阅读 · 0 评论 -
Spark2.3.1 Shuffle Operations
Shuffle是Spark重新分布数据的机制,跨分区进行数据分组,跨执行器和机器进行数据拷贝,复杂且代价高背景1) 以reduceByKey操作为例,把单个key的所有值reduce并生成一个新的RDD,reduce函数应用到和这个key相关的所有value上,使得完成这个操作要使用到所有分区的所有键值对2) Spark的分区不是按照特定的操作来划分的,一个单独的reduceByKey任务在一个单...原创 2018-07-08 16:30:00 · 440 阅读 · 0 评论 -
Spark2.3.1 常用Transformations和Actions
原创 2018-07-08 14:41:25 · 247 阅读 · 0 评论 -
Spark2.3.1 函数传递
Spark API非常依赖于在驱动器程序传递函数到集群上运行,有两种方式1 匿名函数2 全局单例对象的静态方法 1) 传递单例对象的函数object MyFunctions { def func1(s: String): String = { ... }}myRdd.map(MyFunctions.func1) 2) 在类的方法中有transformation/action操...原创 2018-07-08 14:26:27 · 470 阅读 · 0 评论 -
Spark2.3.1 RDD Programming Guide
Spark应用:driver program运行用户main函数并在executors集群执行并行操作1 Spark提供两种抽象:RDD和shared variables2 创建RDD的两种方式:在驱动器程序parallelize集合;从外部存储系统引入数据集 1) SparkContext.parallelize 可以使用第二个参数传递分区数量,即并行度,sc.paralle...原创 2018-07-08 16:45:08 · 304 阅读 · 0 评论 -
Spark2.3.1 Quick Start
Spark 2.3.1的编程指导内容如下:Quick StartSpark2.0前Spark主要编程接口是RDDs,2.0之后,RDDs接口被Dataset接口取代,Dataset和RDDs一样是强类型,但是底层做了大量优化。RDDs接口仍然可用,但是强烈推荐转换使用Dataset,性能比RDDs好Spark Shell基础bin/spark-shellDataset操作transformatio...原创 2018-07-08 10:27:16 · 148 阅读 · 0 评论 -
Spark aggregate和combineByKey聚合操作
Aggregate(zeroValue)(seqOp, combOp)对于RDD{1,2,3,4},Aggregate( (6, 5) )( (x, y) => (x._1 + y), (x._2 + 1), (x,y) => (x._1 + y._1, x._2 + y._2))zeroValue既是seqOp的初始值,也是combOp的初始值1. 执行seqOpx = (6, 5)...原创 2018-06-14 01:47:38 · 537 阅读 · 0 评论 -
Spark一 Spark概念和特征
Spark是基于内存处理大规模数据的通用快速计算引擎特征:1) 快速:速度远超Hadoop计算速度2) 易使用:提供Java,Python,Scala,SQL等API3) 通用性:支持交互式查询,流处理,批处理,机器学习算法和图形处理4) 到处运行:Standalone, Hadoop,Cassandra等数据工具配合使用Spark Core1) 实现基本功能,任务调度,内存管理,错误恢复,与存储...原创 2018-07-02 10:39:45 · 1168 阅读 · 0 评论 -
Spark二 安装本地模式Spark
Spark是使用Scala编写的,运行在JVM上1) 安装JDK2) 下载并解压缩spark-2.3.1-bin-hadoop2.7.tgz3) 打开Scala版本的shell,输入bin/spark-shell4) 调整日志级别控制输出信息 conf/log4j.properties log4j.rootCategory=WARN, console #设置为只显示警告和严重的信息5)...原创 2018-07-02 11:01:12 · 1369 阅读 · 0 评论 -
Spark MLlib(四) feature extractors
extraction: features from raw datatransformation: scaling, converting or modifying featuresselection: selecting a subset from featureslocality sensitive hashing: combining feature transformation with ...原创 2018-07-16 16:29:19 · 442 阅读 · 0 评论 -
Spark MLlib(三) pipelines
main conceptsdataframe:存放比如text,feature vectors,true labels,和predictionstransformer: 转换为新的df, 如ML model是将特征dataframe转化为prediction dataframe的算法estimator: be fit on dataframe,生成transformer, 如learning al...原创 2018-07-16 15:57:20 · 433 阅读 · 0 评论 -
Everday I'm Shuffling - Tips for Writing Better Apache Spark Programs
https://www.youtube.com/watch?v=Wg2boMqLjCgUnderstanding the Shuffle in Spark-Common causes of inefficiencyUnderstanding when code runs on the driver vs. the workers-Common causes of errorsHow to fact...原创 2018-07-10 14:56:47 · 301 阅读 · 0 评论 -
RDDs, DataFrames and Datasets in Apache Spark - NE Scala 2016
https://www.youtube.com/watch?v=pZQsDloGB4wRDDs compile-time type safelazybased on Scala collections API compile time type saftyCatalyst Optimizer原创 2018-07-09 20:36:20 · 235 阅读 · 0 评论 -
Spark五 持久化缓存
原因:每次重算RDD和RDD的依赖,消耗大原理:计算出RDD的节点分别保存计算出的分区数据故障:如果出现故障,可以对故障节点分区的数据重算,或者为每个分区保存多个副本策略:如果持久化数据的存储空间不足,会采用LRU的策略将分区从内存中移除持久化级别 默认序列化的形式存储在JVM的堆空间中MEMORY_ONLYMEMORY_ONLY_SERMEMORY_AND_DISKMEMORY_AND_DISK...原创 2018-07-02 15:59:20 · 218 阅读 · 0 评论 -
Spark四 RDD编程
RDD基础RDD是什么?RDD是不可变的分布式对象集合,每个RDD被分为多个分区,分区运行在集群的不同节点上创建RDD?两种方式:1 读取外部数据集 2 在驱动器程序里并行化对象集合val lines = sc.textFile("/usr/local/spark/README.md")val lines = sc.parallelize(List("pandas", "i like pand...原创 2018-07-02 15:19:40 · 168 阅读 · 0 评论 -
Spark三 Spark运行核心机制简介
1 由驱动器程序发起集群上的并行操作2 Spark shell是驱动器程序,通过对象SparkContext访问Spark3 驱动器程序包含应用的main函数,定义集群上的RDD,可以对RDD进行相关操作4 SparkContext是对计算集群的一个连接,shell启动时自动创建SparkContext对象sc5 集群中的驱动器程序一般要管理多个执行器节点...原创 2018-07-02 11:15:39 · 256 阅读 · 0 评论 -
Spark MLlib(二) basic statistics
correlationpearson correlation coefficient(PCC)1 度量两个变量的线性关系强度2 pearson's r一直处于-1和1之间3 (x, y):xy的偏方差除以x标准差和y标准差的乘积spearman rank correlation coefficient(RCC)1 度量两个有关系的但不是线性关系的变量之间的关系3 给变量排序,使用顺序数字1,2,3...原创 2018-07-16 09:05:37 · 168 阅读 · 0 评论