每次执行toDF()或createDataFrame时,scala Spark都会引发与derby相关的错误



我是 scala 和 scala-api spark的新手,我最近在自己的计算机上尝试了 scala-api spark,这意味着我通过设置 SparkSession.builder((.master("local[*]"(在本地运行 spark。 起初,我成功地使用 spark.sparkContext.textFile(( 读取了文本文件。在获得相应的rdd后,我尝试将rdd转换为Spark数据帧,但一次又一次地失败。 具体来说,我使用了两种方法,1( toDF(( 和 2( spark.createDataFrame((,都失败了,这两种方法都给了我类似的错误,如下所示。

2018-10-16 21:14:27 ERROR Schema:125 - Failed initialising database.
Unable to open a test connection to the given database. JDBC url = jdbc:derby:;databaseName=metastore_db;create=true, username = APP. Terminating connection pool (set lazyInit to true if you expect to start your database after your app). Original Exception: ------
java.sql.SQLException: Failed to start database 'metastore_db' with class loader 
org.apache.spark.sql.hive.client.IsolatedClientLoader$$anon$1@199549a5, see the next exception for details.
at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.seeNextException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.bootDatabase(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.<init>(Unknown Source)
at org.apache.derby.jdbc.InternalDriver$1.run(Unknown Source)
at org.apache.derby.jdbc.InternalDriver$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.derby.jdbc.InternalDriver.getNewEmbedConnection(Unknown Source)
at org.apache.derby.jdbc.InternalDriver.connect(Unknown Source)
at org.apache.derby.jdbc.InternalDriver.connect(Unknown Source)

我检查了错误消息,似乎错误与apache.derby有关,并且与某些数据库的某些连接失败。我不知道JDBC实际上是什么。我对pyspark有点熟悉,从来没有被要求配置任何JDBC数据库,为什么SCALA-API SPARK需要它?我应该怎么做才能避免此错误?为什么 scala-api Spark Dataframe 需要 JDBC 或任何数据库,而 scala-api Spark RDD 不需要?

对于未来的谷歌用户: 我已经用谷歌搜索了几个小时,但仍然不知道如何摆脱此错误。但是这个问题的起源非常清楚:我的 Sparksession 启用了对 Hive 的支持,然后需要指定数据库。要解决此问题,我们需要禁用对 Hive 的支持,因为我在自己的 Mac 上运行 spark,因此可以这样做。 所以我下载了 spark 源文件并使用命令自己构建它 ./make-distribution.sh --name hadoop-2.6_scala-2.11 --tgz -Pyarn -Phadoop-2.6 -Dscala-2.11 -DskipTests 省略 -Phive -Phive-thriftserver。 我测试了自建火花,metastore_db文件夹从未创建过,太胖了。

有关详细信息,请参阅这篇文章:预构建的Spark 2.1.0在启动Spark-shell时创建metastore_db文件夹和derby.log

相关内容

最新更新