python - 从 pyspark.ml.pipeline 中的管道对象检索转换后的数据集

标签 python apache-spark pyspark apache-spark-sql pipeline

我是 Spark ML 新手。我正在尝试利用 Spark ML Pipelines 来链接数据转换(将其视为 ETL 过程)。换句话说,我想输入一个DataFrame,进行一系列转换(每次向该dataframe添加一列)并输出转换后的DataFrame。

我正在研究 Python 中管道的文档和代码,但我不知道如何从管道中获取转换后的数据集。请参阅以下示例(从文档复制并修改):

from pyspark.ml import Pipeline
from pyspark.ml.feature import HashingTF, Tokenizer

# Prepare training documents from a list of (id, text, label) tuples.
training = spark.createDataFrame([
   (0, "a b c d e spark", 1.0),
   (1, "b d", 0.0),
   (2, "spark f g h", 1.0),
   (3, "hadoop mapreduce", 0.0)
    ], ["id", "text", "label"])

 # Configure an ML pipeline, which consists of two stages: tokenizer, 
 hashingTF.
 tokenizer = Tokenizer(inputCol="text", outputCol="words")
 hashingTF = HashingTF(inputCol=tokenizer.getOutputCol(), 
 outputCol="features")
 pipeline = Pipeline(stages=[tokenizer, hashingTF])

 training.show()
 pipeline.fit(training)

如何从“管道”对象中获取转换后的数据集(即执行分词器和哈希后的数据集)?

最佳答案

你不能。相反,保留模型

model = pipeline.fit(training)

并用它来转换数据:

training_transformed = model.transform(training)

关于python - 从 pyspark.ml.pipeline 中的管道对象检索转换后的数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49779027/

相关文章:

python - Discord Bot 角色提及

python - 如何将具有非 ASCII 字节的字节数组转换为 python 中的字符串?

hadoop - 在yarn上运行spark时我们应该使用哪种模式?

scala - Spark : Dataset Serialization

python - 在同一 IDE 中使用 Spark 和 Python

如果 Screen 被分离,GNU Screen 中的 Python 最终会变得空闲

python - 对象不能被解释为索引

scala - Spark 和 Scala : can't get MappedRDD to perferm groupByKey from RDD

python-3.x - pyspark中的异常值检测

python - pyspark 数据帧的缓慢过滤