【发布时间】:2019-04-22 03:07:13
【问题描述】:
PMML、Mleap、PFA 目前仅支持基于行的转换。它们都不支持基于框架的转换,例如聚合或 groupby 或 join。导出包含这些操作的 Spark 管道的推荐方法是什么。
【问题讨论】:
标签: apache-spark apache-spark-sql pmml mleap
PMML、Mleap、PFA 目前仅支持基于行的转换。它们都不支持基于框架的转换,例如聚合或 groupby 或 join。导出包含这些操作的 Spark 管道的推荐方法是什么。
【问题讨论】:
标签: apache-spark apache-spark-sql pmml mleap
我看到 Mleap 有 2 个选项:
1) 实现基于数据帧的转换器和SQLTransformer-Mleap 等效项。该解决方案在概念上似乎是最好的(因为您始终可以将此类转换封装在管道元素中),但也需要大量工作。见https://github.com/combust/mleap/issues/126
2) 使用相应的操作扩展DefaultMleapFrame,您想要执行然后实际将所需的操作应用于在修改的MleapServing 子项目中传递给restserver 的数据。
我实际上选择了 2) 并添加了 implode、explode 和 join 作为 DefaultMleapFrame 的方法以及一个允许快速连接的 HashIndexedMleapFrame。我没有实现groupby 和agg,但是在Scala 中这相对容易实现。
【讨论】:
PMML 和 PFA 是表示机器学习模型的标准,而不是数据处理管道。机器学习模型接收数据记录,对其执行一些计算,然后发出输出数据记录。因此,根据定义,您使用的是单个孤立的数据记录,而不是数据记录的集合/框架/矩阵。
如果您需要表示完整的数据处理管道(其中 ML 模型只是工作流程的一部分),那么您需要寻找其他/组合标准。或许 SQL 与 PMML 配对将是一个不错的选择。这个想法是您希望在 ML 模型之外而不是在其内部执行数据聚合(例如,SQL 数据库将比任何 PMML 或 PFA 做得更好运行时)。
【讨论】: