我工作的一个项目,配置管道和改建的血统跟踪星火DataFrames都是必不可少的。 这条管线的终点通常只是修改DataFrames(认为它作为一个ETL任务)。 什么是最有意义对我是充分利用现有的星火ML管道API来跟踪这些改变。 特别是,改变(增加基于他人等列)实现为定制星火ML变形金刚。
然而,我们现在具有内部有关的争论这是否是执行这条管线的最惯用的方式。 另一种选择将是实现这些转换为一系列的UDF,并根据数据帧的模式历史(或火花的内部DF谱系追踪)来建立我们自己的血统跟踪。 此方的说法是,星火的ML管道并不打算只是ETL作业,并应始终以生产可送入星火ML计算器列的目标实现。 针对此方的说法是,它需要大量的,反映现有功能的工作。
有没有与利用星火的ML管道严格的ETL任务的任何问题? 任务只使用变压器的,不包括评估员?
对于我来说,似乎是一个好主意,特别是如果你可以撰写生成到新的不同的管道,因为管道本身可以由不同的管道,因为管道从PipelineStage上树(来源扩展: HTTPS://spark.apache .ORG /文档/最新/ API /阶/ index.html的#org.apache.spark.ml.Pipeline )。
但请记住,你可能是做引擎盖下同样的事情,在这里解释( https://jaceklaskowski.gitbooks.io/mastering-apache-spark/content/spark-mllib/spark-mllib-transformers.html ) :
在内部,变换方法使用火花SQL的UDF定义一个函数(基于上述createTransformFunc功能),将创建新的输出柱(用适当outputDataType)。 的UDF稍后施加到输入数据帧的输入列,结果成为(使用DataFrame.withColumn方法)的输出列中。
如果你已经决定了其他的办法或找到一个更好的办法,请评论。 这是很好的分享星火知识。