如何在自定义 PySpark ML Pipeline _transform() 方法中创建 Spark DataFrame?

How to create a Spark DataFrame inside a custom PySpark ML Pipeline _transform() method?

在 Spark 的 ML Pipelines 中,transformer 的 transform() 方法采用 Spark DataFrame 和 returns DataFrame。我的自定义 _transform() 方法使用传入的 DataFrame 在处理之前创建 RDD。这意味着我的算法的结果必须在从 _transform().

返回之前转换回 DataFrame

那么我应该如何从 _transform() 中的 RDD 创建 DataFrame?

通常我会使用 SparkSession.createDataFrame(). But this means passing a SparkSession instance, spark, into my custom Transformer somehow (or a SqlContext object). And this in turn can create ,例如在尝试将转换器用作 ML 管道中的一个阶段时。

原来在里面做这个很简单 _transform():

yourRdd.toDF(yourSchema)

架构是可选的。我希望我能给你一个 link 到 toDF() 但由于某些原因它似乎没有包含在 https://spark.apache.org/docs/2.2.0/api/python/pyspark.html#pyspark.RDD 下。也许这是一个继承的方法?

我之前还测试过将 SparkSession 对象传递到我的 Transformer 并对其调用 createDataFrame()。有用但没必要。