将Spark特征转换管道导出到文件

时间:2018-11-19 17:41:28

标签: apache-spark apache-spark-sql pmml mleap

PMML,Mleap,PFA当前仅支持基于行的转换。它们都不支持基于帧的转换,例如聚合,分组依据或联接。建议导出包含这些操作的Spark管道的方法是什么。

2 个答案:

答案 0 :(得分:0)

我看到Mleap有2个选项:

1)实现基于数据帧的转换器和等效的SQLTransformer-Mleap。从概念上讲,此解决方案似乎是最佳的(因为您始终可以将这样的转换封装在管道元素中),但也需要大量工作。参见https://github.com/combust/mleap/issues/126

2)用要执行的相应操作扩展DefaultMleapFrame,然后将所需的操作实际应用于经过修改的MleapServing子项目中提交给restserver的数据。

我实际上使用了2),并向implodeexplode添加了joinDefaultMleapFrameHashIndexedMleapFrame作为方法,并允许快速加入。我没有实现groupbyagg,但是在Scala中,这相对容易实现。

答案 1 :(得分:-1)

PMML和PFA是表示机器学习模型的标准,而不是数据处理管道。机器学习模型接收数据记录,对其进行一些计算,然后发出输出数据记录。因此,根据定义,您正在使用单个隔离的数据记录,而不是数据记录的集合/框架/矩阵。

如果您需要表示完整的数据处理管道(其中ML模型只是工作流的一部分),则需要查找其他/组合标准。将SQL与PMML配对可能是一个不错的选择。这个想法是,您希望在ML模型的 外部而不是在内部进行数据聚合(例如,SQL数据库比任何PMML或PFA都要好得多运行时)。