我正在尝试从 DBeaver 创建一个到 Delta Lake Parquet 文件的新连接,该文件位于 HDFS 文件系统上,该文件是我用 Spark/Hadoop/Scala/io.delta 应用程序成功创建的。
(注意:我读到过,没有 Thrift 服务器也可以做到这一点,只需设置 JDBC 驱动程序,并且不需要数据库名称。如果事实并非如此,请告诉我。)
首先通过 DBeaver 驱动程序管理器设置驱动程序并添加所需的库:
- Hadoop-通用-3.3.4.jar
- hadoop-hdfs-客户端-3.3.4.jar
- spark-core_2.13-3.4.3.jar
- io.delta_delta-core_2.13-2.4.0.jar(而不是 delta-core_2.13-2.4.0.jar)
- spark-sql_2.13-3.4.3.jar
DBeaver 详细信息:版本 25.0.1.202503240840
使用 find class,对话框屏幕中返回驱动程序类:来自 spark-sql_2.13-3.4.3.jar 的 org.apache.spark.sql.execution.datasources.jdbc.DriverWrapper
进一步的设置是
- URL 模板:jdbc:spark://sparkmaster:7077
- 驱动程序类型:通用(我不能使用 Apache Spark 模板,因为它会错误地将详细信息设置为旧版本,如 1.2...因此通用驱动程序类型设置)
其他集群环境详细信息包括:
- Java 运行时 11
- Hadoop 3.3.4
- Spark 3.4.3
- Scala 2.13.x
- Delta Lake 2.4.x
- Vmware 实例 [Ubuntu 22.04](3 个节点,分别有 6、6、4GB 内存。)
我收到的错误是:
驱动程序初始化“delta-lake-driver”时出错
对话屏幕中出现的消息:
Can't create driver instance (class 'org.apache.spark.sql.execution.datasources.jdbc.DriverWrapper').
Error creating driver 'delta-lake-driver' instance.
Most likely required jar files are missing.
You should configure jars in driver settings.
Reason: can't load driver class 'org.apache.spark.sql.execution.datasources.jdbc.DriverWrapper'
org/apache/spark/SparkSQLFeatureNotSupportedException
org.apache.spark.SparkSQLFeatureNotSupportedException
org.apache.spark.SparkSQLFeatureNotSupportedException
我还没有看到任何使用 Apache Spark 开源的 DBeaver 示例。目前,我在集群中的所有 3 个节点上都与 MySQL 建立了工作连接。JAR 版本似乎是正确的,因为从 Apache Spark 作业写入可以使用这些版本。
有没有人尝试过使用 Apache Spark 开源、Delta Lake、DBeaver 做类似的事情?
我原本以为驱动程序管理器已准备好所有需要的 JAR。创建表并从 Spark 作业中读取数据非常简单,只需扩展built.sbt并使用“delta”作为格式修改命令即可。所以我认为使用 DBeaver 连接到该表进行一些常规查询会更加容易。
我原本以为库列表已经足够了,如上所述。但除了“最可能需要的 jar 文件丢失”之外,没有更多详细信息。我可以添加依赖关系树报告的所有 jar,但该列表相当庞大。