spark
光与热
这个作者很懒,什么都没留下…
展开
-
修改spark日志配置
在测试Spark计算时,将作业提交到yarn(模式–master yarn-cluster)上,想查看print到控制台这是imposible的,因为作业是提交到yarn的集群上,so 去yarn集群上看日志是很麻烦的,但有特别想看下print的信息,方便调试或者别的目的 在Spark的conf目录下,把log4j.properties.template修改为log4j.properties,原来的转载 2017-08-16 19:30:18 · 1659 阅读 · 0 评论 -
Spark编程进阶之共享变量
在向spark传递函数时,可以向驱动器中传递变量,但是集群中运行的每个任务都会得到这些变量的一个副本,跟新副本不会影响驱动器中的值。spark的两个共享变量,累加器和广播变量分别为结果聚合与广播这两种常见的通信模式突破了这一限制累加器查找包含电影信息包含1996这一信息出现的次数from pyspark import SparkContextsc=SparkContext("local","blan原创 2017-08-31 19:40:52 · 410 阅读 · 0 评论 -
spark sql内置函数
public class Person implements Serializable { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.na转载 2017-09-09 22:01:40 · 2390 阅读 · 0 评论 -
spark shuffle详解
在MapReduce框架中,shuffle是连接Map和Reduce之间的桥梁,Map的输出要用到Reduce中必须经过shuffle这个环节,shuffle的性能高低直接影响了整个程序的性能和吞吐量。Spark作为MapReduce框架的一种实现,自然也实现了shuffle的逻辑。ShuffleShuffle是MapReduce框架中的一个特定的phase,介于Map phase和Reduce p原创 2017-10-01 15:50:49 · 638 阅读 · 0 评论 -
shuffle性能调优之HashShuffleManager和SortShuffleManager
shuffle调优调优概述 大多数Spark作业的性能主要就是消耗在了shuffle环节,因为该环节包含了大量的磁盘IO、序列化、网络数据传输等操作。因此,如果要让作业的性能更上一层楼,就有必要对shuffle过程进行调优。但是也必须提醒大家的是,影响一个Spark作业性能的因素,主要还是代码开发、资源参数以及数据倾斜,shuffle调优只能在整个Spark的性能调优中占到一小部分而已。因转载 2017-10-05 18:29:22 · 1030 阅读 · 0 评论 -
spark性能调优之数据倾斜优化
前言 继《Spark性能优化:开发调优篇》和《Spark性能优化:资源调优篇》讲解了每个Spark开发人员都必须熟知的开发调优与资源调优之后,本文作为《Spark性能优化指南》的高级篇,将深入分析数据倾斜调优与shuffle调优,以解决更加棘手的性能问题。1.数据倾斜调优调优概述 有的时候,我们可能会遇到大数据计算中一个最棘手的问题——数据倾斜,此时Spark作业的性能会比期望差很多转载 2017-10-05 18:40:57 · 578 阅读 · 0 评论 -
深入理解Spark之ListenerBus监听器
ListenerBus对消费队列的实现 上图为LiveListenerBus类的申明 self => 这句相当于给this起了一个别名为selfLiveListenerBus负责将SparkListenerEvents异步发送过已经注册过的SparkListeners,在SparkContext中,首先会创建LiveListenerBus实例,这个类的功能是保存有消息队列负责消息的缓存保存有原创 2017-11-02 16:48:24 · 2083 阅读 · 0 评论 -
spark深入理解之DAGScheduler<一>提交任务
Spark在执行Action算子时,Spark会根据Action操作之前一系列Transform操作的关联关系生成一个DAG,在后续的操作中对DAG进行Stage划分,生成Task并最终运行。整个过程分为如下三步DAGScheduler对每个Application进行分析,根据各RDD之间的依赖关系划分stageDAGScheduler根据划分的每个Stage生成一组Task,将TaskSet提原创 2017-11-03 20:54:51 · 576 阅读 · 0 评论 -
深入理解Spark之RDD的款依赖和窄依赖
RDD的依赖关系RDD和它依赖的parent RDD(s)的关系有两种不同的类型,即窄依赖(narrow dependency)和宽依赖(wide dependency)。 1. 窄依赖指的是每一个parent RDD的Partition最多被子RDD的一个Partition使用,如左图所示 2. 宽依赖指的是多个子RDD的Partition会依赖同一个parent RDD的Partit转载 2017-11-04 08:55:46 · 2001 阅读 · 0 评论 -
Spark 名词解释
梳理一下Spark中关于并发度涉及的几个概念File,Block,Split,Task,Partition,RDD以及节点数、Executor数、core数目的关系。输入可能以多个文件的形式存储在HDFS上,每个File都包含了很多块,称为Block。当Spark读取这些文件作为输入时,会根据具体数据格式对应的InputFormat进行解析,一般是将若干个Block合并成一个输入分片,称为Inp转载 2017-08-31 19:46:03 · 978 阅读 · 0 评论 -
spark randomSplit glom函数操作详解
def randomSplit(weights: Array[Double], seed: Long = Utils.random.nextLong): Array[RDD[T]]该函数根据weights权重,将一个RDD切分成多个RDD。该权重参数为一个Double数组第二个参数为random的种子,基本可忽略。scala> var rdd = sc.makeRDD(1 to 10,10)rdd转载 2017-09-07 09:57:11 · 1767 阅读 · 0 评论 -
spark机器学习电影推荐
package recommendimport org.apache.log4j.{Level, Logger}import org.apache.spark.mllib.recommendation.{ALS, MatrixFactorizationModel, Rating}import org.apache.spark.rdd.RDDimport org.apache.spark.sql原创 2017-09-07 09:05:35 · 1033 阅读 · 0 评论 -
CentOS7 matplotlib notebook 安装和使用
yum install freetype freetype-devel python-freetype yum install libpng libpng-devel python-pypng pip3 install matplotlib原创 2017-08-16 20:04:05 · 624 阅读 · 0 评论 -
如何在Spark2.0.2中启动Ipython Notebook
最近因为学习《Spark机器学习》,里面的第三章涉及到了ipython notebook ,老版本的spark直接在Spark根目录下输入一下就可IPYTHON=1 IPYTHON_OPTS=’–pylab’ ./bin/pyspark可是我下载的是最新的spark2.0.2,这个接口改变了!解决方法1: 需要改成如下命令才行:PYSPARK_DRIVER_PYTHON=ipython PYSP转载 2017-08-16 20:32:29 · 695 阅读 · 0 评论 -
Spark中加载本地(或者hdfs)文件以及SparkContext实例的textFile使用
默认是从hdfs读取文件,也可以指定sc.textFile("路径").在路径前面加上hdfs://表示从hdfs文件系统上读 本地文件读取 sc.textFile("路径").在路径前面加上file:// 表示从本地文件系统读,如file:///home/user/spark/README.md 网上很多例子,包括官网的例子,都是用textFile来加载一个文件创建RDD,类似sc.t转载 2017-08-13 18:47:57 · 4317 阅读 · 0 评论 -
Linux安装Spark集群(CentOS7+Spark2.1.1+Hadoop2.8.0)
1 安装Spark依赖的Scala 1.1下载和解压缩Scala 1.2 配置环境变量 1.3 验证Scala2下载和解压缩Spark 2.1 下载Spark压缩包 2.2 解压缩Spark3 Spark相关的配置 3.1 配置环境变量 3.2 配置co转载 2017-08-15 08:31:52 · 5121 阅读 · 0 评论 -
Linux安装单机版Spark(CentOS7+Spark2.1.1+Scala2.12.2)
1 安装Spark依赖的Scala 1.2 为Scala配置环境变量 1.3 验证Scala2下载和解压缩Spark3 Spark相关的配置 3.1 配置环境变量 3.2 配置conf目录下的文件 3.2.1 新建spark-env.h文件 3.2.2转载 2017-08-15 08:32:35 · 648 阅读 · 0 评论 -
Spark RDD基础(一)
spark对数据的核心抽象—弹性分布式数据集(Resilient Distributed Dataset)即RDD,RDD是一个不可变的分布式对象集合,每个RDD被分为多个分区。 在spark中,对数据的所有操作不外乎创建RDD,转化已有RDD以及调用RDD操作进行求值RDD基础#创建RDDlines=sc.textFile("README.md")#转化操作由一个RDD生成一个新的RDD#原创 2017-08-27 18:35:14 · 1113 阅读 · 0 评论 -
Spark RDD基础(二)之常见的转化操作和行动操作及持久化
1.基本RDD操作1.1元素转化操作map() map接受一个函数,把这个函数用于RDD的每个元素,将函数的返回结果作为结果RDD中对应元素的值,map的返回值类型不需要和输入类型一样#计算RDD中各值的平方nums=sc.parallelize([1,2,3,4])squared=nums.map(lambda x:x*x).collect()for num in squared:原创 2017-08-27 20:05:30 · 3302 阅读 · 0 评论 -
spark键值对操作(一)
键值对RDD也叫做Pair RDD1. 创建Pair RDD把一个普通 RDD转换为pair RDD的时候使用map()函数来实现#使用第一个单词作为一个键,创建一个pair RDDpairs=lines.map(lambda x:(x.split(" ")[0],x))2.Pair RDD转化操作2.1针对单个pairRDD的转换操作reduceByKey(func) 合并具有相同键的值rd原创 2017-08-28 11:49:11 · 1487 阅读 · 0 评论 -
spark键值对操作(二)之数据分区
1.数据分区为了减小分布式应用通信的代价,所以要控制数据分区以获得最小的网络传输 spark中所有键值对RDD都可以进行分区有如下这样的需求:需要对用户访问其未订阅页面 的情况进行统计,以更好的向用户推荐内容。现有一个很大的用户信息表(UserID,UserInfo)对组成的RDD,其中UserInfo包含一个该用户所订阅的主题列表,该应用会周期性与一个小文件(UserID,LinkInfo)组原创 2017-08-28 15:07:30 · 1824 阅读 · 0 评论 -
spark mllib ALS算法简介
一、矩阵分解模型。用户对物品的打分行为可以表示成一个评分矩阵A(m*n),表示m个用户对n各物品的打分情况。如下图所示:其中,A(i,j)表示用户user i对物品item j的打分。但是,用户不会对所以物品打分,图中?表示用户没有打分的情况,所以这个矩阵A很多元素都是空的,我们称其为“缺失值(missing value)”。在推荐系统中,我们希望得到用户对所有物品的打分情况,如果用户没有对一个转载 2017-09-06 18:51:22 · 1322 阅读 · 0 评论 -
Spark算子补充<一>
collectAsMap函数原型def collectAsMap(): Map[K, V]功能和collect函数类似。该函数用于Pair RDD,最终返回Map类型的结果,如果RDD中同一个Key中存在多个Value,那么后面的Value将会把前面的Value覆盖,最终得到的结果就是Key唯一,而且对应一个Valuekeyby函数原型def keyBy[K](f: T => K): RDD[(原创 2017-09-07 19:15:04 · 316 阅读 · 0 评论