Transformer
当我们从数据源读取了一些数据之后, 我们经常需要对这些数据进行一些预处理(类型转换,增删改等等). Spark的mllib提供了一些数据转换的类和函数,但是有时候并不能满足我们的需求,所以我们需要自给自足。当然,我们可以自己构建这些类和函数,如果可以利用Spark提供的一些接口,当然就事半功倍了。其中一个方法就是extends Transformer。关于Transformer 和 Pipeline 的介绍请戳官方文档.
一个最简单的非abstract的继承Transformer的类定义如下:
|
|
然后这个TypeTransformer就可以应用到Pipeline里面啦. 这就是我们的类要继承自Transformer的原因了, 因为Pipeline中的stage要么是Transformer,要么是Estimator. 而后者一般用于机器学习方法, 前者就是功能如其名了.
为了让我们这个TypeTransformer更像Spark中别的Transformer, 我们还需要添加一些方法, 常用的就是:
接下来就要使用这个TypeTransformer了:
这就完了??
好像这个TypeTransformer一次只能处理一列啊, 没错, 就是这样!
好蠢啊○| ̄|_
当然了, 我们可以添加一个方法接收多个inputCol嘛, 不过为了简单介绍一下Pipeline的用法, 我们可以把n个TypeTransformer应用到Pipeline中,每个TypeTransformer的输出都是下一个的输入. 代码如下:
结果就是3个typeTransformer的顺序调用后的结果.