sparkmlib是spark用于机器学习开发的包,实现了在分布式的大数据集群上做机器学习的功能,是目前对分布式支持较好的机器学习框架,除此之外支持分布式的机器学习框架还有tensorflow和deeplearning4j,但sparkmllib天生和hadoop无缝结合,不过sparkmllib的短板是无法支持深度学习,而tensorflow和deeplearning是支持深度学习的。
好了废话不多说,直接干
sparkmllib的开发环境建议搭建在ubantu,或者centos上,不要windows
不要windows!!!,不要windows!!!,不信你可以试试,死了别怪我没提醒。
1,安装centos和ubantud开发环境,可以是真机,也可以是虚拟机
2,安装jdk,建议安装jdk8且版本与IDEA的版本对应
3去IDEA官网下载linux版本的tar包,百度centos或者ubantu安装IDEA这个简单
4下载scala,配置环境变量,忘了百度
然后重点的坑
1pom文件建好后,没有jdk和scala
第一步,点击file,找到project structure设置全局变量和全局包
第二步看图
在settings找到plugins看看IDEA是否已经集成了scala
右击工程名,找到AddFrameworkSupport
找到scala,勾选,点击ok搞定,这下,工程里面就有scala了,用本地的,省得用pom文件去导入,太麻烦
整pom文件
只是导入sparkmllib就行,这里是测试,其他的spark依赖,都可以自动导入,网上有一个版本导入包太多,容易引起scala冲突,这算一个大坑
上清华镜像的官网,下载本地的spark。里面有数据
下载13M的那个,上传解压
测试程序如下:
package com.my.mllib.test
import org.apache.spark.ml.clustering.KMeans
import org.apache.spark.sql.SparkSession
/**
* Created by baohe on 17-7-21.
* Taking is cheap, fuck the code.
*/
object Hello {
def main(args: Array[String]): Unit = {
val spark = SparkSession
.builder
.appName(s"${this.getClass.getSimpleName}")
.master("local")
.getOrCreate()
// $example on$
// Loads data.
val dataset = spark.read.format("libsvm").load("/root/spark-2.1.1/data/mllib/sample_kmeans_data.txt")
// Trains a k-means model.
val kmeans = new KMeans().setK(2).setSeed(1L)
val model = kmeans.fit(dataset)
// Evaluate clustering by computing Within Set Sum of Squared Errors.
val WSSSE = model.computeCost(dataset)
println(s"Within Set Sum of Squared Errors = $WSSSE")
// Shows the result.
println("Cluster Centers: ")
model.clusterCenters.foreach(println)
// $example off$
spark.stop()
}
}
运行报错
原因是pom文件中的scope选项是需要本地有spark环境的,我的本地没有真实的spark所以注释掉
然后就成功了
聚类得到的中心点也输出了
本地测试成功,不要得意,现在的代码还不能打包成jar,不能再集群上运行只是一个玩具
手机扫一扫
移动阅读更方便
你可能感兴趣的文章