簡體   English   中英

每次執行 toDF() 或 createDataFrame 時,scala spark 都會引發與 derby 相關的錯誤

[英]scala spark raises an error related to derby everytime when doing toDF() or createDataFrame

我是 scala 和 scala-api spark 的新手,最近我在自己的計算機上嘗試了 scala-api spark,這意味着我通過設置 SparkSession.builder().master("local[*]") 在本地運行 spark。 起初我使用 spark.sparkContext.textFile() 成功讀取了文本文件。 獲得相應的rdd后,我嘗試將rdd轉換為spark DataFrame,但一次又一次失敗。 具體來說,我使用了兩種方法,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 數據幀需要 JDBC 或任何數據庫,而 scala-api spark RDD 不需要?

對於未來的 googler:我已經搜索了幾個小時,但仍然不知道如何擺脫這個錯誤。 但是這個問題的根源很清楚:我的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 omits -Phive - 自己構建它Phive-thriftserver。 我測試了自建spark,從來沒有創建過metastore_db文件夾,這么肥這么好。

詳細請參考這篇文章: Prebuilt Spark 2.1.0 在啟動 spark-shell 時會創建 metastore_db 文件夾和 derby.log

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM