首页 文章

使用PySpark在数据框上应用sklearn训练的模型

提问于
浏览
5

我使用Python训练了一个随机森林算法,并希望将它应用于PySpark的大数据集 .

我首先加载了训练有素的sklearn RF模型(使用joblib),将包含这些功能的数据加载到Spark数据帧中,然后添加一个包含预测的列,并使用用户定义的函数:

def predictClass(features):
    return rf.predict(features)
udfFunction = udf(predictClass, StringType())
new_dataframe = dataframe.withColumn('prediction', 
udfFunction('features'))

它需要花费很多时间才能运行,是否有更有效的方法来做同样的事情? (不使用Spark ML)

1 回答

  • 0

    sklearn RF模型在酸洗时可能非常大 . 在任务调度期间频繁的模型挖掘/解开可能会导致问题 . 您可以考虑使用广播变量 .

    来自official document

    广播变量允许程序员在每台机器上保留一个只读变量,而不是随副本一起发送它的副本 . 例如,它们可用于以有效的方式为每个节点提供大输入数据集的副本 . Spark还尝试使用有效的广播算法来分发广播变量,以降低通信成本 .

相关问题