当前位置: 首页 > 知识库问答 >
问题:

使用databricks-connect从pycharm调用spark_udf时未找到MLflow文件

厉钊
2023-03-14

我正在将一个scikit-Learning训练的模型保存到我的Windows笔记本电脑中的MLflow模型注册表中。我正在使用数据库连接连接到Azure数据库群集,并从我的本地Py魅力在那里训练模型,但为了开发,我在笔记本电脑中启动模型注册表并将训练好的模型保存在其中——以避免必须设置远程访问DBFS。

我在spark_udf功能时遇到问题。我可以从笔记本电脑的模型注册表中读取模型,但不能将其用作数据砖集群中的 UDF:

model_udf = mlflow.pyfunc.spark_udf(spark, "models:/mymodel/production")  # this works fine
struct_col = F.struct(*df.columns)
predictions = df.withColumn("pred_spark", model_udf(struct_col))  
predictions.show()                                        # throws an exception(see below)

pyspark.sql.utils。PythonException:从UDF引发了异常:“FileNotFoundError:”

[Errno 2]没有这样的文件或目录:

'/local_disk0/spark-1fa39b20-9d2c-4697-957c-392d80326dee/executor-57b039d8-7405-47c4-b072-612e9b87b3dd/spark-e442241d-4007-4c6e-8acd-bf2a35b1a455/isolatedSparkFiles/044cd765-f5f7-46b3-9efb-0944cc91ef4d/c:\temp\tmpsl4hpeyt.zip'

最后一部分很奇怪,因为它混合了linux风格的路由和Windows路由(就像我的Windows笔记本电脑本地目录中的路由)。我以为驱动程序会从模型注册表中读取模型并将其广播给工作人员以调用UDF,但看起来工作人员正试图直接从远程模型注册表中获取模型,对吗?是否有一种解决方案不需要将模型保存在远程模型注册表中,或者至少配置安全性以访问DBFS?

编辑:在设置了将模型注册到远程注册表后(没那么难!)我现在可以将注册的模型下载为skLearning模型并用它进行预测,但我不能通过spark_udf做同样的事情。我得到了

  • 相同的文件未发现错误,如果我通过运行指定模型:/....在函数spark_udf
  • SSL 错误 (未经验证的自签名证书) 如果我通过模型指定模型:/...在spark_udf中,即使我在我的.databrickscfg中明确添加了一个新行不安全= True - 并且由于这不起作用,还添加了os.environ[“MLFLOW_TRACKING_INSECURE_TLS”] = “true”但没有效果。我想它正在做一些事情,因为至少我可以在它不是spark_udf时从注册表下载模型,但是当他们尝试做同样的事情时,看起来像“工人?”有问题(这是我的猜测,不知道它是否有意义)

共有1个答案

隗嘉歆
2023-03-14

Databricks被构造成在本机函数中几乎处处使用dbfs。当你指定一些本地路径或本地路径的驱动程序或执行器,它无论如何会看DBFS。这就是为什么到/local_disk0/这是默认的tempt dbfs位置,它在其他地方添加了您指定的子目录。我想使用spark驱动程序上的文件夹,但放弃了,因为它总是添加/local_disk0/前缀。

 类似资料:
  • 我使用Laravel工人来执行一些后台任务。当我调用的工人使用'php工匠队列:工作',它的工作没有任何问题 但是,当我在CentOS中使用以下congifuration将相同的命令添加到监管: [项目:拉雷维尔工人] 进程名称=%(程序名称)s%(进程编号)02d命令=php /var/www/html/laravel/artisan队列:工作 自动启动 自动重新启动=真 用户=根 numpro

  • 解决方案(更新): 我认为任何操作都会导致react-redux-link调用mapState函数,但是当一个操作没有改变任何事情时,情况就不是这样了。 我有一个localStorage模块,它分派操作,但不更改状态,而是写入localStorage。该模块具有容器中使用的选择器,但在状态实际更改之前不会调用这些选择器,因此只有在调度另一个更改状态的操作后,UI才会正确显示。 问题 当我把商店放在

  • 我有一个脚本叫做在我的主文件夹中。 当我导航到这个文件夹,并输入,我得到 . 当我使用时,我得到 。 为什么会发生这种情况,我如何解决它?

  • 我在为ios编译应用程序时遇到了这个问题 这是整个堆栈跟踪: 在调试模式下在iPhone Xs Max上启动lib / main.dart...正在运行的吊舱安装...运行 Xcode 构建...Xcode 构建完成。 2,4 秒 无法构建 iOS 应用程序 Xcode 构建的错误输出: ↳ ** 构建失败 ** Xcode的输出: ↳ === BUILD TARGET Firebase Auth

  • 我想在scss文件的短地址使用角的样式。 我使用的造型是这样的: 我在文件夹中创建了一个文件夹,并将样式放在上面: 然后转到并添加以下内容: 我需要在中使用它,如下所示: 但它显示了这个错误: >./src/styles.scss中出错(./node_modules/@angular-devkit/build-angular/src/angular-cli-files/plugins/raw-cs

  • 我尝试设置Databricks Connect,以便能够与已在Azure上的Workspace上运行的远程DatabricksCluster一起工作。当我尝试运行命令“databricks connect test”时,它永远不会结束。 我遵循官方文件。 我在3.7版中安装了最新的Anaconda。我创建了本地环境:连接创建 --名称 db连接 python=3.5 我已经在5.1版本中安装了“d