1 回答
TA贡献1799条经验 获得超9个赞
您正在尝试使用 spark 从 SQLite 表导入数据。实际上,在 spark 中,JDBCDialect forSQLite是不存在的。因此,SQLite 类型未按预期匹配,因此出现此异常。
要解决这个问题,您需要通过扩展 Spark 抽象JdbcDialect类来编写 jdbc 方言,如下所示 -
object SQLiteDialect extends JdbcDialect {
...
}
在这里,您可以从其他可用的方言(例如PostgressDialect )中获得帮助
现在按照下面提到的步骤进行测试 -
SQLiteDialect
将编译后的类和伴生对象打包到一个 JAR 中将 JAR 复制到 Spark 二进制安装中的 jars 文件夹(可选,可能可以在额外的 --jars 参数中设置路径)
然后在创建 SQLite 表和示例数据后在 spark-shell 中运行以下测试:
org.apache.spark.sql.jdbc.JdbcDialects.registerDialect(org.apache.spark.sql.jdbc.SQLiteDialect)
val jdbcDF = sqlContext.read.format('jdbc').options(url='jdbc:sqlite:/path/to/sqlitedb/test.db',
dbtable = 'the_table',
driver = 'org.sqlite.JDBC').load()
jdbcDF.show()
JdbcDialects.unregisterDialect(org.apache.spark.sql.jdbc.SQLiteDialect)
参考这个线程
貌似有中型博客讲SQLite
方言,有很好的解释,请参考。
添加回答
举报