Spark
文章平均质量分 85
小爷毛毛(卓寿杰)
NLP对话问答、大模型、AIGC。
微信视频号:毛毛讲书,欢迎关注进一步交流!
展开
-
pyspark做Item2vec
【代码】pyspark做Item2vec。原创 2021-02-14 12:20:22 · 1030 阅读 · 1 评论 -
pyspark做movielens推荐模型特征工程
前面文章讲了如何这篇文章我们来讲讲,如何使用pyspark为推荐模型做特征工程。同样的,我们将使用movielens数据集,我们需要进行Sample Label、Movie Features生成以及User Features的生成、最后再split Train&Test Samples。原创 2021-02-11 18:23:39 · 752 阅读 · 1 评论 -
pyspark 特征工程
曾经在15、16年那会儿使用Spark做机器学习,那时候pyspark并不成熟,做特征工程主要还是写scala。后来进入阿里工作,特征处理基本上使用PAI 可视化特征工程组件+ODPS SQL,复杂的话才会自己写python处理。最近重新学习了下pyspark,笔记下如何使用pyspark做特征工程。我们使用movielens的数据进行,oneHotEncoder、multiHotEncoder和Numerical features的特征处理。原创 2021-02-10 12:22:09 · 2398 阅读 · 2 评论 -
深入理解Spark 2.1 Core (十一):Shuffle Reduce 端的原理与源码分析
http://blog.csdn.net/u011239443/article/details/56843264 在《深入理解Spark 2.1 Core (九):迭代计算和Shuffle的原理与源码分析 》我们讲解了,以传统Hadoop MapReduce类似的从HDFS中读取数据,再到rdd.HadoopRDD.compute便可以调用函数f,即map中的函数的过程。在《深入理解Spark ...原创 2017-02-24 16:27:18 · 4097 阅读 · 2 评论 -
深入理解Spark 2.1 Core (十):Shuffle Map 端的原理与源码分析
http://blog.csdn.net/u011239443/article/details/55044862 在上一篇《深入理解Spark 2.1 Core (九):迭代计算和Shuffle的原理与源码分析》提到经过迭代计算后,SortShuffleWriter.write中: // 根据排序方式,对数据进行排序并写入内存缓冲区。 // 若排序中计算结果超出的阈值, //原创 2017-02-13 21:41:03 · 2360 阅读 · 1 评论 -
【Spark Mllib】决策树,随机森林——预测森林植被类型
决策树有训练分类模型的函数trainClassifier和回归模型的函数trainRegressor,这里我们使用trainClassifier。随机森林可以理解将数据集合分成n个子集,然后在每个子集上建立决策树,最后结果是n棵决策树的平均值。因为一共有7种类别,所以生成的是7*7的矩阵,aij 表示实际类别是i,而被预测类别是j的次数。我们可以将featureSubsetStrategy设置为auto,让算法自己来决定。相当于关于impurity,depth,bins的三层循环。但是,我们可以参阅下。原创 2016-07-08 11:09:33 · 7965 阅读 · 0 评论 -
【Spark Mllib】K-均值聚类——电影类型
经过损失函数的评估,将性能最好的一次训练选定为最终的模型。试图将一系列样本分割成K个不同的类簇(其中K是模型的输入参数),其形式化的目标函数称为类簇内的方差和(within cluster sum of squared errors,WCSS)。但是,也有证据表明聚类过程会提取电影之间的属性或者相似之处,这不是单纯基于电影名称和题材容易看出来的(比如外语片的类簇和传统电影的类簇,等等)。内部评价指标WCSS(我们之前提过的K-元件的目标函数),是使类簇内部的样本距离尽可能接近,不同类簇的样本相对较远。原创 2016-06-18 23:29:26 · 7961 阅读 · 1 评论 -
【Spark Mllib】分类模型——各分类模型使用
数据集:线性模型原创 2016-06-16 13:37:30 · 5181 阅读 · 0 评论 -
RDD Join 性能调优
阅读本篇博文时,请先理解RDD的描述及作业调度:[《深入理解Spark 2.1 Core (一):RDD的原理与源码分析 》](http://blog.csdn.net/u011239443/article/details/53894611#t16)Join数据是我们在Spark操作中的很重要的一部分。Spark Core 和Spark SQL的基本类型都支持join操作。虽然join很常用而且功能原创 2017-01-12 17:18:16 · 10020 阅读 · 0 评论 -
深入理解Spark 2.1 Core (六):资源调度的原理与源码分析
在上篇博文中,我们讲到了如何启动Master和Worker,还讲到了如何回收资源。但是,我们没有将AppClient是如何启动的,其实它们的启动也涉及到了资源是如何调度的。这篇博文,我们就来讲一下AppClient的启动和逻辑与物理上的资源调度。原创 2017-01-05 23:25:43 · 5461 阅读 · 1 评论 -
深入理解Spark 2.1 Core (十二):TimSort 的原理与源码分析
http://blog.csdn.net/u011239443/article/details/57406300 在博文《深入理解Spark 2.1 Core (十):Shuffle Map 端的原理与源码分析 》中我们提到了: 使用Sort等对数据进行排序,其中用到了TimSort 这篇博文我们就来深入理解下TimSort可视化推荐先观看下 Youtube 上关于TimSort可视化原创 2017-02-26 19:49:52 · 3199 阅读 · 0 评论 -
【Spark Mllib】逻辑回归——垃圾邮件分类器与maven构建独立项目
使用SGD算法逻辑回归的垃圾邮件分类器 1 package com.oreilly.learningsparkexamples.scala 2 3 import org.apache.spark.{SparkConf, SparkContext} 4 import org.apache.spark.mllib.classification.LogisticRegressi原创 2016-06-13 10:05:34 · 4147 阅读 · 0 评论 -
深入理解Spark 2.1 Core (九):迭代计算和Shuffle的原理与源码分析
在博文《深入理解Spark 2.1 Core (七):任务执行的原理与源码分析 》我们曾讲到过: Task有两个子类,一个是非最后的Stage的Task,ShuffleMapTask;一个是最后的Stage的Task,ResultTask。它们都覆盖了Task的runTask方法。我们来看一下ShuffleMapTask的runTask方法中的部分代码: var writer: Shuf原创 2017-02-11 20:30:54 · 6188 阅读 · 0 评论 -
Eclipse远程调试Spark
修改配置文件修改${spark_home}/bin/spark-class文件:"$RUNNER" -Xmx128m -cp "$LAUNCH_CLASSPATH" org.apache.spark.launcher.Main -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8888 "$@"参数说明:-Xdebug原创 2017-04-11 13:52:49 · 3055 阅读 · 0 评论 -
深入理解Spark ML:多项式朴素贝叶斯原理与源码分析
http://blog.csdn.net/u011239443/article/details/76176743朴素贝叶斯的基本原理与简单的python与scala的实现可以参阅:http://blog.csdn.net/u011239443/article/details/68061124如果一个给定的类和特征值在训练集中没有一起出现过,那么基于频率的估计下该概率将为0。这将是一个问题。因为与其他概率相乘时将会把其他概率的信息统统去除。所以常常要求要对每个小类样本的概率估计进行修正,以保证不会出现有为0的原创 2017-07-27 12:27:54 · 4985 阅读 · 1 评论 -
深入理解Spark 2.1 Core (二):DAG调度器的原理与源码分析
上一篇《深入理解Spark 2.0 (一):RDD实现及源码分析 》的5.2 Spark任务调度器我们省略过去了,这篇我们就来讲讲Spark的调度器。概述上一篇《深入理解Spark(一):RDD实现及源码分析 》提到: 定义RDD之后,程序员就可以在动作(注:即action操作)中使用RDD了。动作是向应用程序返回值,或向存储系统导出数据的那些操作,例如,count(返回RDD...原创 2016-12-28 22:11:02 · 11110 阅读 · 3 评论 -
Spark异常处理与调优(更新中~)
资源调优http://blog.csdn.net/u011239443/article/details/52127689内存Memory Tuning,Java对象会占用原始数据2~5倍甚至更多的空间。最好的检测对象内存消耗的办法就是创建RDD,然后放到cache里面去,然后在UI上面看storage的变化;当然也可以使用SizeEstimator来估算。使用-XX:+UseCom...原创 2016-07-04 20:54:22 · 11625 阅读 · 0 评论 -
【Spark Mllib】TF-IDF&Word2Vec——文本相似度
一个比较通用的例子是使用单词的向量表示基于单词的含义计算两个单词的相似度。特征哈希通过使用哈希方程对特征赋予向量下标,这个向量下标是通过对特征的值做哈希得到的(通常是整数)。使用的哈希方程必须是一致的(就是说,对于一个给定的输入,每次返回相同的输出)。的含义是:在一个文档中出现次数很多的词相比出现次数少的词应该在词向量表示中得到更高的权值。最后的结果就是,稀有的或者重要的词被给予了更高的权值,而更加常用的单词(被认为比较不重要)则在考虑权重的时候有较小的影响。对于我们的任务来说,可以使用。原创 2016-06-21 16:59:02 · 27588 阅读 · 1 评论 -
深入理解Spark 2.1 Core (一):RDD的原理与源码分析
本文链接:http://blog.csdn.net/u011239443/article/details/53894611 该论文来自Berkeley实验室,英文标题为:Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing。下面的翻译,我是基于博文http://sh...原创 2016-12-27 12:57:57 · 22322 阅读 · 3 评论 -
RDD,DataFrame与DataSet
http://blog.csdn.net/wo334499/article/details/51689549 http://www.jianshu.com/p/c0181667daa0RDD介绍可以参阅 : http://blog.csdn.net/u011239443/article/details/53894611优点:编译时类型安全编译时就能检查出类型错误面向对象的编程风格直接通过类转载 2017-03-16 16:27:12 · 608 阅读 · 0 评论 -
深入理解Spark 2.1 Core (八):Standalone模式容错及HA的原理与源码分析
第五、第六、第七篇博文,我们讲解了Standalone模式集群是如何启动的,一个App起来了后,集群是如何分配资源,Worker启动Executor的,Task来是如何执行它,执行得到的结果如何处理,以及app退出后,分配了的资源如何回收。但在分布式系统中,由于机器众多,所有发生故障是在所难免的,若运行过程中Executor、Worker或者Master异常退出了,那该怎么办呢?这篇博文,我们就来讲原创 2017-01-09 14:27:24 · 2133 阅读 · 0 评论 -
spark-shell用非sql API 改写 hql
当我们在spark-shell用scala写程序的时候,如何不嵌入sql来查询Hive呢?这里我们来举个例子:hql先来看下想要执行的sql,这里选用了TPC-DS中的query3: select /*+MAPJOIN(dt, item)*/ dt.d_year ,item.i_brand_id brand_id原创 2016-08-29 11:59:44 · 1141 阅读 · 0 评论 -
Spark性能优化:资源调优篇
在开发完Spark作业之后,就该为作业配置合适的资源了。Spark的资源参数,基本都可以在spark-submit命令中作为参数设置。很多Spark初学者,通常不知道该设置哪些必要的参数,以及如何设置这些参数,最后就只能胡乱设置,甚至压根儿不设置。资源参数设置的不合理,可能会导致没有充分利用集群资源,作业运行会极其缓慢;或者设置的资源过大,队列没有足够的资源来提供,进而导致各种异常。总之,无论是哪转载 2016-08-05 11:51:18 · 1279 阅读 · 0 评论 -
Tachyon(现名:Alluxio):Spark生态系统中的分布式内存文件系统
原文: http://www.csdn.net/article/2015-06-25/2825056 Tachyon是Spark生态系统内快速崛起的一个新项目。 本质上, Tachyon是个分布式的内存文件系统, 它在减轻Spark内存压力的同时,也赋予了Spark内存快速大量数据读写的能力。Tachyon把内存存储的功能从Spark中分离出来, 使Spark可以更专转载 2016-11-29 16:30:18 · 1017 阅读 · 0 评论 -
深入理解Spark 2.1 Core (七):任务执行的原理与源码分析
上篇博文《深入理解Spark 2.1 Core (六):资源调度的实现与源码分析》中我们讲解了,AppClient如何启动,启动后如何为该app分配executor资源,以及分析了在Spark1.4之前资源调度算法的bug。接下来,我们就来讲逻辑上资源调度完后,该如何物理上启动Executor,以及Executor如何执行Task的。启动Executor 调用栈如下:Master.allocat原创 2017-01-06 23:08:07 · 3105 阅读 · 2 评论 -
深入理解Spark 2.1 Core (四):运算结果处理和容错的原理与源码分析
在上一篇博文《深入理解Spark 2.1 Core (三):任务调度器的实现与源码分析 》TaskScheduler在发送任务给executor前的工作就全部完成了。这篇博文,我们来看看当executor计算完任务后,Spark是如何处理获取的计算结果与容错的。概述对于计算结果,会根据结果的大小有不同的策略:生成结果在(∞,1GB)(\infty,1GB):结果直接丢弃,可以通过spark.dr原创 2017-01-04 22:11:14 · 4025 阅读 · 1 评论 -
深入理解Spark 2.1 Core (三):任务调度器的原理与源码分析
上一篇博文《深入理解Spark 2.1 Core (二):DAG调度器的实现与源码分析 》讲到了DAGScheduler.submitMissingTasks中最终调用了taskScheduler.submitTasks来提交任务。这篇我们就从taskScheduler.submitTasks开始讲,深入理解TaskScheduler的运行过程。提交Task调用栈如下:TaskSchedulerI原创 2017-01-03 17:12:22 · 4218 阅读 · 0 评论 -
深入理解Spark 2.1 Core (五):Standalone模式运行的原理与源码分析
概述前几篇博文都在介绍Spark的调度,这篇博文我们从更加宏观的调度看Spark,讲讲Spark的部署模式。Spark部署模式分以下几种:local 模式local-cluster 模式Standalone 模式YARN 模式Mesos 模式我们先来简单介绍下YARN模式,然后深入讲解Standalone模式。YARN 模式介绍YARN介绍YARN是一个资源管理、任务调度的框架,主要包含原创 2017-01-05 17:25:14 · 3184 阅读 · 0 评论 -
MapReduce Shuffle原理 与 Spark Shuffle原理
MapReduce Shuffle原理 与 Spark Shuffle原理 MapReduce的Shuffle过程介绍 Shuffle的本义是洗牌、混洗,把一组有一定规则的数据尽量转换成一组无规则的数据,越随机越好。MapReduce中的Shuffle更像是洗牌的逆过程,把一组无规则的数据尽量转换成一组具有一定规则的数据。为什么MapReduce计算模型需要Shuffle过程?我们都知转载 2016-11-27 17:51:28 · 2278 阅读 · 0 评论 -
【Spark Mllib】性能评估 ——MSE/RMSE与MAPK/MAP
推荐模型评估MSE/RMSE均方差(MSE),就是对各个实际存在评分的项,pow(预测评分-实际评分,2)的值进行累加,在除以项数。而均方根差(RMSE)就是MSE开根号。我们先用ratings生成(user,product)RDD,作为model.predict()的参数,从而生成以(user,product)为key,value为预测的rating的RDD。然后,用ratings生成以(user原创 2016-06-30 11:14:04 · 5950 阅读 · 1 评论