代码之家  ›  专栏  ›  技术社区  ›  snark

如何在自定义PySpark ML管道\u transform()方法中创建Spark数据帧?

  •  0
  • snark  · 技术社区  · 7 年前

    在Spark的 ML Pipelines 变压器的 transform() 方法需要火花 DataFrame 并返回 数据帧 . 我的自定义 _transform() 方法使用传入的数据帧在处理RDD之前创建RDD。这意味着在从返回之前,必须将算法的结果转换回数据帧 _转换() .

    那么,我应该如何从RDD内部创建数据帧呢 _转换() ?

    通常我会使用 SparkSession.createDataFrame() . 但这意味着要通过 SparkSession 例子 spark ,根据我的习惯 Transformer 不知何故(或 SqlContext 对象)。而这反过来又可以 other problems 例如,尝试将变压器用作ML管道中的阶段时。

    1 回复  |  直到 7 年前
        1
  •  0
  •   snark    6 年前

    事实证明,这就像在里面做一样简单 _transform() :

    yourRdd.toDF(yourSchema)
    

    架构是可选的。我希望我能给你一个链接 toDF() 但似乎不包括在 https://spark.apache.org/docs/2.2.0/api/python/pyspark.html#pyspark.RDD 出于某种原因。也许这是一种继承的方法?

    我之前也通过了测试 SparkSession 对象到我的 Transformer 和呼叫 createDataFrame() 在上面。这是可行的,但没有必要。