SQLite 磁盘 I/O 错误(python - databricks)

Sqlite disk I/O error (python - databricks)

所以,我是 运行 Databricks 上的一个集群。当我尝试像这样查询 sqlite 文件时:

import sqlite3

conn = sqlite3.connect("/dbfs/FileStore/testing.sqlite")
cur = conn.cursor()
cur.execute('''SELECT * FROM ZACCELEROMETER''')

我收到这个错误:

OperationalError                          Traceback (most recent call last)
<command-163> in <module>
----> 1 cur.execute('''SELECT * FROM ZACCELEROMETER''')

OperationalError: disk I/O error

值得一提的是,我可以在 Jupiter 本地查询这个确切的文件。另一个不寻常的事情是在数据块上,我试图打开一个我在互联网上找到的名为“Chinook_Sqlite.SQLite”的示例 SQLite 文件,它工作正常没有错误,与第一个文件不同。 我认为它可能必须与第一个 SQLite 文件的编码有关。

如有任何建议,我们将不胜感激! 如果有什么不清楚的地方,请告诉我。

谢谢!

对于将来会遇到此问题的任何人,我找到了解决方案,我认为它适用于任何分布式文件系统。

conn = sqlite3.connect('data.sqlite')
curr = conn.execute('PRAGMA locking_mode = EXCLUSIVE')

只需 运行 第二行就可以了。我认为问题在于 sqlite 是在本地 运行 (即一台机器 运行 ),所以在 NFS 上,将 sqlite 文件的锁定模式设置为独占将只允许一个用户在连接仍处于活动状态时访问 sqlite 文件。