Spark机器学习案例 spark-example: spark mllib example

标签: | 发表时间:2018-08-03 22:10 | 作者:
出处:https://github.com

#这是一个Spark MLlib实例 

##1 K-means基础实例 

###1.1 数据准备 准备好如下数据:

0.0 0.0 0.0
0.1 0.1 0.1
0.2 0.2 0.2
9.0 9.0 9.0
9.1 9.1 9.1
9.2 9.2 9.2
0.3 0.2 0.2
9.1 9.5 9.1
0.2 0.2 0.2
0.1 0.2 0.2
8.9 9.5 9.1

命名为kmeans_data.txt,且上传到hdfs的/spark/mllib/data/路径中。

###1.2 代码打包

  • 在Intellij中,点击file->选择project structure->选择Artifact->添加jar->把乱七八糟的依赖移除->勾选Build on make。
  • 点击Build->选择Build Artifact->选择ReBuild,然后在之前填写的路径下找到jar。
  • 上传到spark中。

###1.3 执行代码

  • 执行命令 ./spark-submit --class com.blogchong.spark.mllib.base.Kmeans --master spark://192.168.5.200:7077 --num-executors 2 --driver-memory 124m --executor-memory 124m --total-executor-cores 2 /root/spark/hcy/spark-example.jar
    //需要注意的是,在设置core数以及内存时,最好先参考一下spark-master-id:8080页面中的worker参数,别超过了就行。
  • 跑完了,直接到输出文件夹下,找到代码的输出结果即可。

##2 协同推荐ALS算法基础实例 ###2.1 数据准备 用户评分数据,格式: 用户ID,电影ID,评分

1,1,5.0
1,2,1.0
1,3,5.0
1,4,1.0
2,1,5.0
2,2,1.0
2,3,5.0
2,4,1.0
3,1,1.0
3,2,5.0
3,3,1.0
3,4,5.0
4,1,1.0
4,2,5.0
4,3,1.0
4,4,5.0

上传到hdfs的/spark/mllib/data/als路径中。

###2.2 代码打包

  • 在Intellij中,点击file->选择project structure->选择Artifact->添加jar->把乱七八糟的依赖移除->勾选Build on make。
  • 点击Build->选择Build Artifact->选择ReBuild,然后在之前填写的路径下找到jar。
  • 上传到spark中。

###2.3 执行代码

  • 执行命令 ./spark-submit --class com.blogchong.spark.mllib.base.AlsArithmetic --master spark://192.168.5.200:7077 --num-executors 2 --driver-memory 124m --executor-memory 124m --total-executor-cores 2 /root/spark/hcy/spark-example.jar
    //需要注意的是,在设置core数以及内存时,最好先参考一下spark-master-id:8080页面中的worker参数,别超过了就行。
  • 跑完了,直接到输出文件夹下,找到代码的输出结果即可。

###2.4 附加说明

在实际的调试过程中,我们会把ALS的几个重要参数,比如迭代次数,比如lambda值等,设置成一个范围,然后进行逐步调优,当MSE值,也就是均根方差值最小时,这个模型即我们需要的训练模型。

##3 协同推荐ALS算法进阶--电影推荐实例 ###3.1 数据准备 **当前用户(需要给这货做推荐)评分数据(11条)personalRatings.txt

格式 用户ID::电影ID::评分::时间戳**
0::1::5::1409495135
0::780::4::1409495135
0::590::3::1409495135
0::1216::4::1409495135
0::648::5::1409495135
0::344::3::1409495135
0::165::4::1409495135
0::153::5::1409495135
0::597::4::1409495135
0::1586::5::1409495135
0::231::5::1409495135

**电影信息数据(3706条)movies.dat

格式: 电影ID::电影名称::类型**
1::Toy Story (1995)::Animation|Children's|Comedy
2::Jumanji (1995)::Adventure|Children's|Fantasy
3::Grumpier Old Men (1995)::Comedy|Romance
4::Waiting to Exhale (1995)::Comedy|Drama
5::Father of the Bride Part II (1995)::Comedy
6::Heat (1995)::Action|Crime|Thriller
7::Sabrina (1995)::Comedy|Romance
8::Tom and Huck (1995)::Adventure|Children's
9::Sudden Death (1995)::Action

**用户电影评分信息数据(1000209条)ratings.dat

格式: 用户ID::电影名称::评分::时间戳**
3::260::5::978297512
3::2858::4::978297039
3::3114::3::978298103
3::1049::4::978297805
3::1261::1::978297663
3::552::4::978297837
3::480::4::978297690
4::1265::2::978298316
4::1266::5::978297396
4::733::5::978297757

上传到hdfs的/spark/mllib/data/als2路径中。

###3.2 代码打包

  • 在Intellij中,点击file->选择project structure->选择Artifact->添加jar->把乱七八糟的依赖移除->勾选Build on make。
  • 点击Build->选择Build Artifact->选择ReBuild,然后在之前填写的路径下找到jar。
  • 上传到spark中。

###3.3 执行代码

  • 执行命令 ./spark-submit --class com.blogchong.spark.mllib.advance.ALSRecommendMovie.AlsArithmeticPractice --master spark://192.168.5.200:7077 --num-executors 2 --driver-memory 400m --executor-memory 400m --total-executor-cores 2 /root/spark/hcy/spark-example.jar
    //需要注意的是,在设置core数以及内存时,最好先参考一下spark-master-id:8080页面中的worker参数,别超过了就行。
  • 跑完了,直接到输出文件夹下,找到代码的输出结果即可。

###3.4 附加说明

在调试过程中,把ALS的几个重要参数,比如迭代次数,比如lambda值等,设置成一个范围,然后进行逐步调优,当MSE值,也就是均根方差值最小时,这个模型即我们需要的训练模型。

###3.5 输出结果

对于每次尝试的结果直接打印,最终给用户0推荐的结果按降序保存在/spark/mllib/result/als2/data/recommendations,模型文件保存在/spark/mllib/result/als2/model。

##4 LDA主题特征抽取实例

###执行命令

批量文档训练:获取训练文档的Docs-Topics概率矩阵,以及Words-Topics概率矩阵,当然,还有Model文件,这是后期预测新文档的基础.

  • 训练执行命令 ./spark-submit --class com.blogchong.spark.mllib.advance.LdaExtractTopics.Train.LDAModelBuild --master spark://192.168.25.10:7077 --conf "spark.driver.extraJavaOptions=-XX:MaxPermSize=512m" --conf "spark.executor.extraJavaOptions=-XX:MaxPermSize=512m" --executor-memory 6G --driver-memory 6G --num-executors 4 --executor-cores 4 --jars /root/hcyLda/spark-example-1.0-SNAPSHOT.jar XX PdataPath /hcy/lda/train/part-r-00000-write PmodelPath /hcy/lda/model PtopicSize 100 PmaxIterations 100 PwordsPath /hcy/lda/train/extract_index.dic PsaveVector true > ~/hcyLda/20151219.log 2>&1

新文档主题预测:利用上面训练得到的LocalLDAMoldel,进行新文档的主题预测,求docs-topics矩阵,然后结合Model中已有的Topics-words矩阵,求docs-words矩阵

  • 测试执行命令 ./spark-submit --class com.blogchong.spark.mllib.advance.LdaExtractTopics.Check.PredictsDocTopics --master spark://192.168.25.10:7077 --conf "spark.driver.extraJavaOptions=-XX:MaxPermSize=512m" --conf "spark.executor.extraJavaOptions=-XX:MaxPermSize=512m" --executor-memory 6G --driver-memory 6G --num-executors 1 --executor-cores 1 --jars /root/hcyLda/spark-example-1.0-SNAPSHOT.jar XX PdataPath /hcy/lda/data/test.data PmodelPath /hcy/lda/model/2015-12-23-23-32-00/localLdaModel PtopicsPath /hcy/lda/data PtopicSize 200 PwordsPath /hcy/lda/train/extract_index.dic > ~/hcyLda/201512231544.log 2>&1

##5 新词发现(基于Ansj工具)

###执行命令

  • 训练执行命令 ./spark-submit --class com.blogchong.spark.mllib.advance.DiscoveryNewWord.AnsjDisWords --master spark://192.168.25.10:7077 --conf "spark.driver.extraJavaOptions=-XX:MaxPermSize=512m" --conf "spark.executor.extraJavaOptions=-XX:MaxPermSize=512m" --executor-memory 3G --driver-memory 3G --num-executors 1 --executor-cores 1 --jars /root/hcyLda/newWord/spark-example-1.0-SNAPSHOT.jar,/root/hcyLda/newWord/ansj_seg-0.9.jar,/root/hcyLda/newWord/tree_split-1.0.1.jar --driver-library-path /root/hcyLda/newWord/ansj_seg-0.9.jar /root/hcyLda/newWord/tree_split-1.0.1.jar /hcy/newWord/data/11 /hcy/newWord/result

##6 新词发现(基于NGram算法的Spark实现)

###执行命令

  • 执行命令 ./spark-submit --class com.blogchong.spark.mllib.advance.DiscoveryNewWord.NGramSpark --master spark://192.168.25.10:7077 --conf "spark.driver.extraJavaOptions=-XX:MaxPermSize=512m" --conf "spark.executor.extraJavaOptions=-XX:MaxPermSize=512m" --executor-memory 6G --driver-memory 18G --num-executors 3 --executor-cores 3 --jars /root/hcyLda/newWord/spark-example-1.0-SNAPSHOT.jar,/root/hcyLda/newWord/ansj_seg-0.9.jar,/root/hcyLda/newWord/tree_split-1.0.1.jar,/root/hcyLda/newWord/json-lib-2.4-jdk13.jar,/root/hcyLda/newWord/ezmorph-1.0.6.jar /root/hcyLda/newWord/spark-example-1.0-SNAPSHOT.jar /hcy/newWord/data/userLibrary.dic /hcy/newWord/data/11 /hcy/newWord/result > ~/hcyLda/newWord/20160118.log

相关 [spark 机器学习 spark] 推荐:

Spark机器学习案例 spark-example: spark mllib example

- -
#这是一个Spark MLlib实例 . ##1 K-means基础实例 . 命名为kmeans_data.txt,且上传到hdfs的/spark/mllib/data/路径中. 在Intellij中,点击file->选择project structure->选择Artifact->添加jar->把乱七八糟的依赖移除->勾选Build on make.

Spark概览

- - 简单文本
Spark具有先进的DAG执行引擎,支持cyclic data flow和内存计算. 因此,它的运行速度,在内存中是Hadoop MapReduce的100倍,在磁盘中是10倍. 这样的性能指标,真的让人心动啊. Spark的API更为简单,提供了80个High Level的操作,可以很好地支持并行应用.

Spark与Mapreduce?

- - 崔永键的博客
我本人是类似Hive平台的系统工程师,我对MapReduce的熟悉程度是一般,它是我的底层框架. 我隔壁组在实验Spark,想将一部分计算迁移到Spark上. 年初的时候,看Spark的评价,几乎一致表示,Spark是小数据集上处理复杂迭代的交互系统,并不擅长大数据集,也没有稳定性. 但是最近的风评已经变化,尤其是14年10月他们完成了Peta sort的实验,这标志着Spark越来越接近替代Hadoop MapReduce了.

Spark迷思

- - ITeye博客
目前在媒体上有很大的关于Apache Spark框架的声音,渐渐的它成为了大数据领域的下一个大的东西. 证明这件事的最简单的方式就是看google的趋势图:. 上图展示的过去两年Hadoop和Spark的趋势. Spark在终端用户之间变得越来越受欢迎,而且这些用户经常在网上找Spark相关资料. 这给了Spark起了很大的宣传作用;同时围绕着它的也有误区和思维错误,而且很多人还把这些误区作为银弹,认为它可以解决他们的问题并提供比Hadoop好100倍的性能.

Spark 优化

- - CSDN博客推荐文章
提到Spark与Hadoop的区别,基本最常说的就是Spark采用基于内存的计算方式,尽管这种方式对数据处理的效率很高,但也会往往引发各种各样的问题,Spark中常见的OOM等等. 效率高的特点,注定了Spark对性能的严苛要求,那Spark不同程序的性能会碰到不同的资源瓶颈,比如:CPU,带宽、内存.

Spark&Spark性能调优实战

- - CSDN博客互联网推荐文章
       Spark特别适用于多次操作特定的数据,分mem-only和mem & disk. 其中mem-only:效率高,但占用大量的内存,成本很高;mem & disk:内存用完后,会自动向磁盘迁移,解决了内存不足的问题,却带来了数据的置换的消费. Spark常见的调优工具有nman、Jmeter和Jprofile,以下是Spark调优的一个实例分析:.

Mesos上部署spark

- - 开源小站
还是回到之前一直持续的 Mesos话题. 在之前的环节里,我们已经尝试了Mesos的安装,Marathon守护服务以及相对比较主流的Mesos作为Hadoop的资源管理器的实际操作. 这次就说说同属于伯克利出品的Spark. 其实spark最初0.7以前的版本还没有自己的资源管理系统,资源的调度都是通过Mesos来执行的.

Spark容错机制

- - zzm
一般来说,分布式数据集的容错性有两种方式: 数据检查点和记录数据的更新. 面向大规模数据分析,数据检查点操作成本很高,需要通过数据中心的网络连接在机器之间复制庞大的数据集,而网络带宽往往比内存带宽低得多,同时还需要消耗更多的存储资源. 因此,Spark选择记录更新的方式. 但是,如果更新粒度太细太多,那么记录更新成本也不低.

beeline 连接SPARK /Hive

- - 开源软件 - ITeye博客
hiveclient所在主机的jdk 1.7_51,hive 0.12和hadoop 2.3.0是从服务器端拷贝过来的,环境变量一切OK. 执行连接报了Invalid URL的错误:. 开始的一段时间都在纠结这个jdbc的URL格式问题,后来在cloudra论坛上找到了一个方法,. 直接调用的jdbc:hive2的驱动测试是正常的,证明CLASSPATH等环境变量没有问题.

Spark性能调优

- - zzm
通常我们对一个系统进行性能优化无怪乎两个步骤——性能监控和参数调整,本文主要分享的也是这两方面内容. Spark提供了一些基本的Web监控页面,对于日常监控十分有用. http://master:4040(默认端口是4040,可以通过spark.ui.port修改)可获得这些信息:(1)stages和tasks调度情况;(2)RDD大小及内存使用;(3)系统环境信息;(4)正在执行的executor信息.