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
的顺序调用后的结果.