# sparkDemo **Repository Path**: tearwind/sparkDemp ## Basic Information - **Project Name**: sparkDemo - **Description**: sparkDemo - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2018-12-12 - **Last Updated**: 2020-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # sparkDemo #### 项目介绍 sparkDemo spark学习笔记 #### 软件架构 spark计算Demo.包含java 和 scala版本。不断补充各种demo 关于spark的ml包和mllib包 这两个包都是spark用作机器学习的示例,其中ml功能更全面灵活,未来官方会主要支持ml #### 安装教程 1. IDEA,我使用的破解的旗舰版,社区版应该自己装几个插件就可以了。scala maven #### 使用说明 1. 导出jar包,放到spak中执行。 2. sparksubmit指令可以像hadoop jar指令一样理解,底层还是java 指令,不过封装的指令会将依赖的jar包加入classpath。一些自己添加的jar包,可以放到spark的lib目录中,但是会对运行环境有污染。所以最好是自己加载jar包。 从运行日志可以看出,示例的spark程序最终会将所有依赖上传到hdfs中,然后读取hdfs中的jar包进行分布式计算。 示例中将例子的依赖包单独打了出来,然后,可以使用runSparkDemos.sh指令执行。主要就是将自己的依赖加入到classpath中去。 3. 日志:spark的控制台日志默认会打印到System.err中。所以程序中可以用System.out打印自己的调试日志。 然后,sparkDemos.err中会打印出任务监控页面地址。具体代码中的日志要到监控页面上找到对应的处理节点查看日志。 #### 示例总结 1、spark计算 2、spark读取hdfs文件参与计算 3、spark streaming读取kafka参与计算 4、spark JavaALSExample 推荐引擎 #### 笔记 ##### JavaALSExample 推荐引擎 1、 推荐计算场景: 已有数据:用户ID,产品ID,用户评分--示例中组装成Rating对象 然后根据数据计算出推荐模型 模型可用来计算对用户ID推荐最适合该用户的产品,同时对该产品计算最值得推荐的用户。基于协同过滤算法实现。 算法基础:一般以用户和产品为X,Y轴,评分为网格分数,可以得到一个很稀疏的矩阵,矩阵中很多地方都是空的。ALS做的事情就是把这些空格按照一定的规则填满,再根据填上去的数据进行推荐。 2、核心代码: ```java ALS als =new ALS(); als.setMaxIter(5).setRegParam(0.01) .setRank(8) .setUserCol("userId") .setItemCol("prodId") .setRatingCol("rating"); ALSModel alsModel = als.fit(trainingRDD); alsModel.setColdStartStrategy("drop"); ``` Rank: 对应ALS模型中的因子个数,即矩阵分解出的两个矩阵的新的行/列数 maxIter:迭代次数,默认10 regParam: 正则化参数 alpha: 置信参数 3、执行结果: ``` Root-mean-square error = 1.82476712879489 +------+--------------------+ |userId| recommendations| +------+--------------------+ | 12|[[46,5.3678684], ...| | 13|[[93,3.798154], [...| | 14|[[27,5.3542647], ...| | 25|[[93,4.3112717], ...| | 18|[[18,7.3076634], ...| | 20|[[22,4.707354], [...| | 23|[[92,6.286374], [...| | 15|[[94,6.7260866], ...| | 6|[[93,4.46416], [9...| | 16|[[54,4.6812663], ...| | 17|[[90,5.185174], [...| | 9|[[49,4.851525], [...| | 19|[[90,4.0929623], ...| | 29|[[46,4.7665], [90...| | 10|[[2,4.217213], [8...| | 2|[[27,6.67814], [8...| | 22|[[51,5.1173487], ...| | 4|[[87,4.298499], [...| | 5|[[55,4.527723], [...| | 28|[[53,6.3636055], ...| +------+--------------------+ only showing top 20 rows +------+--------------------+ |prodId| recommendations| +------+--------------------+ | 50|[[28,4.2220745], ...| | 70|[[2,4.047501], [6...| | 12|[[28,4.5890703], ...| | 52|[[28,5.8456807], ...| | 13|[[23,3.929097], [...| | 73|[[26,4.0352592], ...| | 83|[[2,5.13948], [18...| | 93|[[2,5.0865035], [...| | 14|[[9,3.12153], [10...| | 25|[[8,4.6248007], [...| | 65|[[23,4.920649], [...| | 95|[[7,3.37604], [8,...| | 46|[[7,5.473927], [1...| | 56|[[17,3.0269525], ...| | 37|[[2,5.035196], [6...| | 67|[[8,3.1470778], [...| | 97|[[11,2.9982314], ...| | 18|[[18,7.3076634], ...| | 38|[[18,4.7885737], ...| | 20|[[17,4.938546], [...| +------+--------------------+ only showing top 20 rows ``` #### 码云特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)