pyspark 在数据块上使用MLFlow和Spark时出现运行时错误

bihw5rsg  于 2022-11-01  发布在  Spark
关注(0)|答案(1)|浏览(176)

下面是我创建的一些模型:

class SomeModel(mlflow.pyfunc.PythonModel):
    def predict(self, context, input):
        # do fancy ML stuff
        # log results
        pandas_df = pd.DataFrame(...insert predictions here...)
        spark_df = spark.createDataFrame(pandas_df)
        spark_df.write.saveAsTable('tablename', mode='append')

我尝试通过在代码后面调用它来以这种方式记录模型:

with mlflow.start_run(run_name="SomeModel_run"):
    model = SomeModel()
    mlflow.pyfunc.log_model("somemodel", python_model=model)

不幸的是,它给我这个错误消息:
mlflow.pyfunc.log_model("somemodel", python_model=model)
错误是由mlflow.pyfunc.log_model("somemodel", python_model=model)行引起的,如果将其注解掉,模型将进行预测并将结果记录在表中。
或者,删除predict函数中调用spark创建 Dataframe 并保存表的行,我就可以记录我的模型了。
我需要我的模型不仅要写入表,还要被记录

4nkexdtk

4nkexdtk1#

我也遇到过类似的错误,我可以通过将spark函数(如spark.createDataFrame(pandas_df))带出类来解决这个问题。如果你想使用spark读写数据,可以在main函数中完成。

class SomeModel(mlflow.pyfunc.PythonModel):
       def predict(self, context, input):
       # do fancy ML stuff
       # log results
       return predictions

    with mlflow.start_run(run_name="SomeModel_run"):
      model = SomeModel()
      pandas_df = pd.DataFrame(...insert predictions here...)
      mlflow.pyfunc.log_model("somemodel", python_model=model)

相关问题