【版权声明】博客内容由厦门大学数据库实验室拥有版权,未经允许,请勿转载!
在机器学习处理过程中,为了方便相关算法的实现,经常需要把标签数据(一般是字符串)转化成整数索引,或是在计算结束后将整数索引还原为相应的标签。
Spark ML包中提供了几个相关的转换器,例如:StringIndexer
、IndexToString
、OneHotEncoder
、VectorIndexer
,它们提供了十分方便的特征转换功能,这些转换器类都位于org.apache.spark.ml.feature
包下。
值得注意的是,用于特征转换的转换器和其他的机器学习算法一样,也属于ML Pipeline模型的一部分,可以用来构成机器学习流水线,以StringIndexer
为例,其存储着进行标签数值化过程的相关 超参数,是一个Estimator
,对其调用fit(..)
方法即可生成相应的模型StringIndexerModel
类,很显然,它存储了用于DataFrame
进行相关处理的 参数,是一个Transformer
(其他转换器也是同一原理)。
由于Spark2.0起,SQLContext
、HiveContext
已经不再推荐使用,改以SparkSession
代之,故本文中不再使用SQLContext
来进行相关的操作,关于SparkSession
的具体详情,这里不再赘述,可以参看Spark2.0的官方文档。
Spark2.0以上版本的spark-shell
在启动时会自动创建一个名为spark
的SparkSession
对象,当需要手工创建时,SparkSession
可以由其伴生对象的builder()
方法创建出来,如下代码段所示:
import org.apache.spark.sql.SparkSession
val spark = SparkSession.builder().
master("local").
appName("my App Name").
getOrCreate()
和SQLContext
一样,也可以开启RDD
的隐式转换:
import spark.implicits._
下面对几个常用的转换器依次进行介绍。
使用Eclipse编写Spark应用程序(Scala+Maven)
点击这里观看厦门大学林子雨老师主讲《大数据技术原理与应用》授课视频
【版权声明】博客内容由厦门大学数据库实验室拥有版权,未经允许,请勿转载!
[返回Spark教程首页]
对Scala代码进行打包编译时,可以采用Maven,也可以采用sbt,相对而言,业界更多使用sbt。本教程介绍如何在 Ubuntu中使用 Eclipse 来开发 scala 程序(使用Maven工具),在Spark 2.1.0,scala 2.11.8 下验证通过。使用 Eclipse,我们可以直接运行代码,省去许多繁琐的命令。(相关文章:如何在 Ubuntu中使用 Eclipse 来开发 scala 程序(使用sbt工具))
Spark 2.1.0入门:决策树分类器
【版权声明】博客内容由厦门大学数据库实验室拥有版权,未经允许,请勿转载!
[返回Spark教程首页]
一、方法简介
决策树(decision tree)是一种基本的分类与回归方法,这里主要介绍用于分类的决策树。决策树模式呈树形结构,其中每个内部节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶节点代表一种类别。学习时利用训练数据,根据损失函数最小化的原则建立决策树模型;预测时,对新的数据,利用决策树模型进行分类。
继续阅读
Spark2.1.0入门:逻辑斯蒂回归分类器
【版权声明】博客内容由厦门大学数据库实验室拥有版权,未经允许,请勿转载!
逻辑斯蒂回归
方法简介
逻辑斯蒂回归(logistic regression)是统计学习中的经典分类方法,属于对数线性模型。logistic回归的因变量可以是二分类的,也可以是多分类的。
Spark2.1.0入门:机器学习工作流(ML Pipelines)
【版权声明】博客内容由厦门大学数据库实验室拥有版权,未经允许,请勿转载!
[返回Spark教程首页]
Spark2.1.0入门:Spark MLlib介绍
【版权声明】博客内容由厦门大学数据库实验室拥有版权,未经允许,请勿转载!
[返回Spark教程首页]
Spark2.1.0入门:DStream输出操作
【版权声明】博客内容由厦门大学数据库实验室拥有版权,未经允许,请勿转载!
[返回Spark教程首页]
在Spark应用中,外部系统经常需要使用到Spark DStream处理后的数据,因此,需要采用输出操作把DStream的数据输出到数据库或者文件系统中。
继续阅读
Spark2.1.0入门:DStream转换操作
【版权声明】博客内容由厦门大学数据库实验室拥有版权,未经允许,请勿转载!
[返回Spark教程首页]
DStream转换操作包括无状态转换和有状态转换。
无状态转换:每个批次的处理不依赖于之前批次的数据。
有状态转换:当前批次的处理需要使用之前批次的数据或者中间结果。有状态转换包括基于滑动窗口的转换和追踪状态变化的转换(updateStateByKey)。
继续阅读
Spark2.1.0入门:RDD队列流(DStream)
【版权声明】博客内容由厦门大学数据库实验室拥有版权,未经允许,请勿转载!
[返回Spark教程首页]
在调试Spark Streaming应用程序的时候,我们可以使用streamingContext.queueStream(queueOfRDD)创建基于RDD队列的DStream。
继续阅读
Spark2.1.0入门:套接字流(DStream)
【版权声明】博客内容由厦门大学数据库实验室拥有版权,未经允许,请勿转载!
[返回Spark教程首页]
Spark Streaming可以通过Socket端口监听并接收数据,然后进行相应处理。
继续阅读