一个简单的Spark ML的例子
文章目录
- 1-配置
- 2-流程
- 3-注意
- 4-project
1-配置
首先,我在虚拟上,搭建了一个单机spark2.4.1(无hadoop)。然后在本地的IDEA中远程运行spark,操作一个svm的小例子。
sbt文件:
name := "spark_ml_examples"
version := "0.1"
scalaVersion := "2.11.12"
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.4.1"
libraryDependencies += "org.apache.spark" % "spark-streaming_2.11" % "2.4.1"
libraryDependencies += "org.apache.spark" % "spark-streaming-kafka-0-10_2.11" % "2.4.1"
libraryDependencies += "org.apache.spark" % "spark-sql_2.11" % "2.4.1"
libraryDependencies += "org.apache.spark" % "spark-mllib_2.11" % "2.4.1"
libraryDependencies += "org.json4s" %% "json4s-jackson" % "{latestVersion}"
其中kafka和stream这里没有用到,因为之前写的,没有移除。关于加载的jar包,我提供几个地址去查询,直接给链接。
https://www.mvnjar.com/org.apache.spark/list.html
https://mvnrepository.com/artifact/org.apache.spark/spark-streaming-kafka-assembly
https://search.maven.org/artifact/org.apache.spark/spark-streaming-kafka-0-10_2.11/2.4.1/jar
2-流程
整个流程比较简单,就是一般的机器学习方法,只不过里面涉及到了spark处理。
直接贴代码:
import org.apache.log4j.{Level, Logger}
import org.apache.spark.ml.Pipeline
import org.apache.spark.ml.feature._
import org.apache.spark.ml.evaluation.MulticlassClassificationEvaluator
import org.apache.spark.ml.feature.PCA
import org.apache.spark.ml.classification.LinearSVC
import org.apache.spark.sql.SparkSessionobject spark_svm {def main(args: Array[String]): Unit = {System.setProperty("hadoop.home.dir", "F:\\hadoop-common-2.2.0-bin")Logger.getLogger("org.apache.spark").setLevel(Level.WARN)// 创建SparkSessionval spark = SparkSession.builder.appName("svm_example").master("local[2]").getOrCreate()// 加载数据val data = spark.read.format("libsvm").load("./data/sample_libsvm_data.txt")data.show(5)// 数据归一化val scaler = new StandardScaler().setInputCol("features").setOutputCol("scaledfeatures").setWithMean(true).setWithStd(true)val scalerdata = scaler.fit(data)val scaleddata = scalerdata.transform(data).select("label","scaledfeatures").toDF("label","features")data.show(5)// PCA降维val pca = new PCA().setInputCol("features").setOutputCol("pcafeatures").setK(5).fit(scaleddata)val pcadata = pca.transform(scaleddata).select("label","pcafeatures").toDF("label","features")data.show(5)// 划分数据集val Array(trainData, testData) = pcadata.randomSplit(Array(0.5, 0.5), seed = 20)trainData.count()// 创建svmval lsvc = new LinearSVC().setMaxIter(10).setRegParam(0.1)// 创建pipelineval pipeline = new Pipeline().setStages(Array(scaler, pca, lsvc))
// 训练svc
// val lsvcmodel = lsvc.fit(trainData)val lsvcmodel = pipeline.fit(trainData)// 验证精度val res = lsvcmodel.transform(testData).select("prediction","label")val evaluator = new MulticlassClassificationEvaluator().setLabelCol("label").setPredictionCol("prediction").setMetricName("accuracy")val accuracy = evaluator.evaluate(res)println(s"Accuracy = ${accuracy}")spark.stop()}
}
3-注意
在运行中,主要遇到了2个问题,一个是提示没有hadoop,百度得知,通过下载hadoop-bin.zip,然后解压,最用利用 System.setProperty(“hadoop.home.dir”, “F:\hadoop-common-2.2.0-bin”)配置。下载后,解压到哪里,就是哪里目录。
第二个问题就是master的url:xx.master(“local[2]”)
4-project
在我的github中有整个项目,包括jar包,可以自行下载。
github地址
数据集:https://github.com/Great1414/spark_ml_learn/tree/master/data
参考链接:https://spark.apache.org/docs/latest/ml-classification-regression.html
一个简单的Spark ML的例子相关推荐
- 一个简单的HTTP通讯的例子,使用了CInternetSession,CHttpConnection,CHttpFile三个类
一个简单的HTTP通讯的例子,使用了CInternetSession,CHttpConnection,CHttpFile三个类. http://blog.csdn.net/STK_tianwen/ar ...
- 一个简单的 Hello world! 例子使用 boost::mpi::group 和 boost::mpi::broadcast()
一个简单的 Hello world! 例子使用 boost::mpi::group 和 boost::mpi::broadcast 实现功能 C++实现代码 实现功能 一个简单的 Hello worl ...
- 一个简单的XML文档例子
一个简单的XML文档例子: <?xml version="1.0"?> <note> <to>Tove</to> <from& ...
- 20. [Python GUI] PyQt5中的模型与视图框架-实现一个简单的文件浏览器的例子
PyQt5中的模型与视图框架-实现一个简单的文件浏览器的例子 一.使用模型/视图实现一个简单的文件浏览器 二.小手一抖,点个赞再走哦~ 一.使用模型/视图实现一个简单的文件浏览器 这个例子里不涉及数据 ...
- java 序列化 例子_一个简单的Java序列化的例子
简单来说序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化,流的概念这里不用多说(就是I/O),我们可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间(注:要想将对 ...
- java txtreader_一个简单的Java读写文件例子
针对txt文件的读写可以使用java的读写操作.以下是一个简单的例子: import java.io.BufferedReader; import java.io.BufferedWriter; im ...
- 一个简单的Spring的AOP例子(JAVA面向切面编程)
公司要求分享技术,一个小组九个人,每周一个人,想想讲讲AOP吧,用处也挺大的,果断写了一个小例子,改了改也就成了.这是个简单AOP例子,包括前置通知,后置通知,环绕通知,和目标对象. 目标对象的接口: ...
- 一个简单的运算表达式解释器例子
之前研究Lamda表达式,突然对解释器感兴趣,于是在网上找了一下相关的资料,但是关于解释器的文章比较少,关于.NET的文章就更少了,只知道一个解释器模式(设计模式之一). 于是根据这个解释器模式实现了 ...
- 增强学习系列之(二):实现一个简单的增强学习的例子
我们现在来用之前提到的Q-Learning算法,实现一个有趣的东西 1. 算法效果 我们想要实现的,就是一个这样的小车.小车有两个动作,在任何一个时刻可以向左运动,也可以向右运动,我们的目标是上小车走 ...
最新文章
- POJ - 1330 Nearest Common Ancestors tanjan_LCA
- UVA816 Abbott的复仇 Abbott's Revenge(final的BFS)(真•答案)
- linux自动挂起什么意思,Linux中进行挂起(待机)的命令说明
- 在 linux 下使用 CMake 构建应用程序
- 网口扫盲一:网卡初步认识
- 论基于candence的组装清单做法
- IOS 5 中@synthesize window = _window是什么意思呢
- multinorm r语言_与心理学数据分析相关的R工具包
- [vue] vue-loader是什么?它有什么作用?
- 错过SaaS,就是错过这个时代
- 你真的了解分层架构吗?——写给被PetShop毒害的朋友们 (转)
- java-字符串反转
- AutoMapper不用任何配置就可以从dynamic(动态)对象映射或映射到dynamic对象。
- 由UIview获得其controller
- 怎么复原java项目文件_从jar包还原出java源码(项目文件)
- 手机android的文件怎么恢复,手机文件误删除怎么恢复-互盾安卓恢复大师
- 工业级芯片可靠性试验项目条件
- java二维数组的赋值_java二维数组三种初始化方法(实例)
- 面试谈薪资,别不好意思,4个技巧帮你勇敢谈薪
- Linux系统如何把kali装进u盘,怎么把kalilinux系统装到u盘中