首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将PySpark数据记录到MLFlow伪制品中

将PySpark数据记录到MLFlow伪制品中
EN

Stack Overflow用户
提问于 2020-11-10 14:53:20
回答 2查看 996关注 0票数 1

我目前正在为dbfs编写一个MLFlow工件,但是我使用的是下面的代码.

代码语言:javascript
运行
复制
temp = tempfile.NamedTemporaryFile(prefix="*****", suffix=".csv")
temp_name = temp.name
try:
  df.to_csv(temp_name, index=False)
  mlflow.log_artifact(temp_name, "******")
finally:
  temp.close() # Delete the temp file

如果'df‘是一个火花数据,我将如何写这个?

EN

回答 2

Stack Overflow用户

发布于 2022-02-24 01:42:11

您只需使用带有适当协议的filepath URL即可。"dbfs“是一个通用数据库。对于Azure来说,“For”是必要的。(我不记得AWS的S3扩展了)

代码语言:javascript
运行
复制
filepath="dbfs:///filepath"
df # My Spark DataFrame
df.write.csv(filepath)
mlflow.log_artifact(temp_name, filepath)
票数 0
EN

Stack Overflow用户

发布于 2022-07-08 04:23:07

在您的示例中,问题与spark如何访问文件系统有关,而与python如何访问文件系统详情见这里有关。这可能不是推荐的方法(我本人对Databricks相当陌生),但是如果您在一个节点上,您可以将您的拼图写入本地文件系统,mlflow可以使用以下内容记录:

代码语言:javascript
运行
复制
with tempfile.TemporaryDirectory() as tmpdirname:
    df.write.parquet(f'file:{tmpdirname}/my_parquet_table')
    mlflow.log_artifacts(tmpdirname, artifact_path='my_parquet_table_name')

请记住,parquet " file“实际上是一个包含大量文件的目录,因此您需要使用log_artifacts,而不是log_artifact,如果您不指定artifact_path,那么就会得到构成这个拼花文件(目录)的所有小文件,直接转储到您的mlflow工件的根目录中。而且,Mlflow没有任何预视功能,所以根据您的用例,记录parquet工件可能不像最初看起来那么方便。

HTH

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64771247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档