You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Databricks社区版PySpark读取SQLite数据库遇路径不存在错误

解决Spark JDBC读取Databricks上SQLite数据库的路径问题

问题原因

SQLite JDBC驱动基于Java,只能识别本地文件系统路径,无法直接读取Databricks的DBFS(dbfs:/)路径;而直接写/FileStore/...会指向Databricks节点的本地文件系统,该路径默认不存在,所以才会报出'/FileStore' does not exist的错误。

解决方案步骤

1. 先确认文件是否存在于DBFS目标路径

先在Databricks notebook中执行以下命令,检查目标文件是否真的在指定路径下:

dbutils.fs.ls("/FileStore/tables/")

如果输出结果里没有chinook-1.db,说明文件没上传到正确位置,需要重新上传文件到该DBFS路径。

2. 使用DBFS的本地挂载路径

Databricks会自动将DBFS挂载到集群节点本地的/dbfs目录下,这是Java层可以识别的本地路径,所以修改JDBC URL为:

df = spark.read.format('jdbc') \
          .options(
              driver='org.sqlite.JDBC',
              dbtable='employees',
              url='jdbc:sqlite:/dbfs/FileStore/tables/chinook-1.db'
          ).load()

注意:路径必须是/dbfs/FileStore/...,不能写成dbfs:/FileStore/...(JDBC驱动不识别DBFS协议)或/FileStore/...(本地无此路径)。

3. 备选方案:拷贝文件到本地临时目录

如果上述方法仍无法解决,可以将DBFS中的SQLite文件拷贝到节点本地临时目录后再读取:

# 从DBFS拷贝文件到本地临时目录
dbutils.fs.cp("dbfs:/FileStore/tables/chinook-1.db", "file:/tmp/chinook-1.db")

# 读取本地临时文件
df = spark.read.format('jdbc') \
          .options(
              driver='org.sqlite.JDBC',
              dbtable='employees',
              url='jdbc:sqlite:/tmp/chinook-1.db'
          ).load()

4. 确认SQLite JDBC驱动已正确加载

如果驱动未安装,也可能导致路径相关的异常。可以通过以下方式安装驱动:

  • 进入集群的「库」页面,添加Maven库,坐标填写org.xerial:sqlite-jdbc:3.41.2.1(可替换为最新版本)
  • 或者在notebook中执行Scala命令安装:
libraryDependencies += "org.xerial" % "sqlite-jdbc" % "3.41.2.1"

内容的提问来源于stack exchange,提问作者AzSurya Teja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 17:52:42