MLlib中的vector和线性代数运算

目前最新的Spark 1.1.0版本中MLlib主要还是对核心算法的支持,辅助处理模块还很不完善。源代码包和其功能的对应关系如下:

 

classification/clustering/regression/tree分类算法、回归算法、决策树、聚类算法
optimization核心算法的优化方法实现
stat基础统计
feature预处理
evaluation算法效果衡量
linalg基础线性代数运算支持
recommendation推荐算法

MLlib中的vector和线性代数运算

不知道大家有没有注意到一个问题,就是MLlib底层的矩阵运算使用了breeze库,breeze库提供了vector/matrix的实现 以及相应计算的接口(linalg)。但是在MLlib里面同时也提供了vector和linalg等的实现(目前只是对breeze做了一层包装)。在 所有的MLlib的函数里面的参数传递都是使用Mllib自己的vector,而且在函数内的矩阵计算又通过 toBreeze.toDenseVector变成breeze的形式进行运算。这样做的目的一是保持自己函数接口的稳定性,不会因为breeze的变化 而变化;另外一个就是可以把distributed matrix作为一种matrix的实现而被使用。

 

6,开发环境

Spark集群(standalone、yarn-client、yarn-cluster、单机调试环境)。

我主要使用Scala开发,IDE为Intellij IDEA,安装Scala插件。

开发一个project可以使用maven或者sbt编译,都可以通过IDEA创建相应的工程。 Maven编译的话和Java的maven工程没啥区别,主要是修改pom.xml文件;使用sbt编译的话,主要是修改build.sbt文件。

build.sbt的格式网上有很多资料了,简单说下需要注意的问题:

1) 必须每隔一行写新的内容;

2) libraryDependencies 后面%%和%的区别:artifactId后面带/不带版本号;

3) libraryDependencies 后面可以使用”provided”使其在assembly打包的时候不被打入包中。

开发一个基于Spark和MLlib的机器学习Job,主要依赖的两个libraryDependencies就是spark-core和spark-mllib。

其实使用Scala开发Spark程序最重要的一点就是要知道你写的代码中哪些是RDD的操作,哪些是在RDD内部的操作,哪些是 transform,哪些是actions,哪个地方会形成一个stage。这些搞清楚之后就明白了哪些code是在Driver上执行的,哪些是在 executor上并行执行的。另外就是哪些资源相关的参数,像executor-memory和num-executors等。

转载于:https://www.cnblogs.com/ylx1214/p/4460409.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值