python - 从databricks中的python代码访问文件
问题描述
我正在尝试通过在https://community.cloud.databricks.com/的笔记本中使用以下代码来访问我之前通过 CLI 复制的模型文件
with open("/dbfs/cat_encoder.joblib", "rb") as f:
lb_category = joblib.load(f)
为此我得到
FileNotFoundError: [Errno 2] No such file or directory: '/dbfs/cat_encoder.joblib'
正如我所说的那样,我已经使用 CLI 复制了文件:
dbfs cp cat_encoder.joblib dbfs:/cat_encoder.joblib
然后做
databricks fs ls "dbfs:/"
我看到了我复制的文件。
但是,如果我要在我的笔记本中执行此操作:
os.chdir('/dbfs')
print(os.listdir('.'))
如果我使用的是 UI 或 CLI,我看到的是一个空目录,而不是我看到的文件夹和文件。
如果我要从笔记本中写入这个空目录,是的,这是可行的,我会在该目录中看到我刚刚编写的文件中的一个文件,问题是我想阅读我事先已经放在那里的内容。
看起来本地 api 无法看到众所周知的另一只手对我通过 CLI 或 UI 加载的所有数据集和模型所做的事情。那么为什么我看不到这些文件呢?它是否与凭据有关,如果是,我该如何解决?或者可能是完全不同的东西,比如安装?我正在自己做一个介绍性试验和一些基本的东西来学习数据块,所以我对底层概念不太熟悉。
解决方案
我在下游发现了 3 个问题,但现在它对我有用。我试图解决的问题是保存一个 Spark-nlp 的 ClassifierDL 模型,而我在这个模型上得到的帮助同时为我解决了许多问题。
在 databricks 中,我创建了一个新集群,并在 spark 配置部分添加了以下 2 行:
spark.kryoserializer.buffer.max 1000M
spark.serializer org.apache.spark.serializer.KryoSerializer
启动客户端后,我可以使用上面代码中的“/dbfs/cat_encoder.joblib”进行本地读取。
推荐阅读
- python-3.x - 硒python在NoSuchElementException之后继续
- c# - 有没有办法在 Winform 中关闭应用程序时发送 NotifyIcon 通知?
- java - 为什么 MySQL 数据库返回空 ResultSet 虽然数据应该是正确的
- javascript - 数组通过索引重复问题更改值?
- localization - 找不到 Csla.resources.dll
- automata - 设计一个包含所有不属于 ww^R 形式的 0 和 1 字符串的 PDA
- azure-cosmosdb - Cosmos DB - Gremlin API 对 .tail() 有奇怪的行为?
- python-3.x - Flask-cors 没有按照配置拒绝来源
- amazon-web-services - AWS Elastic Beanstalk - 使用 ECR 时,/root/.docker/config.json 未使用新凭证更新
- google-calendar-api - Google Calendar .ics 导入问题