scala spark каждый раз, когда выполняет toDF () или createDataFrame, выдает ошибку, связанную с derby - PullRequest
0 голосов
/ 16 октября 2018

Я новичок в scala и scala-api spark, и я недавно попробовал scala-api spark на своем компьютере, что означает, что я запускаю искру локально, установив SparkSession.builder (). Master ("local [*]"),Сначала мне удалось прочитать текстовый файл с помощью spark.sparkContext.textFile ().Получив соответствующий rdd, я попытался преобразовать rdd в искровой 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, ПОЧЕМУ SCARA-API SPARK это нужно?что я должен сделать, чтобы избежать этой ошибки?почему в фрейме данных scala-api spark требуется JDBC или любая другая база данных, а в RDD для scala-api spark нет?

1 Ответ

0 голосов
/ 17 октября 2018

Для будущего гуглера: я гуглил несколько часов и до сих пор не знаю, как избавиться от этой ошибки.Но происхождение этой проблемы очень ясно: моя свеча включает поддержку Hive, которая затем должна указывать базу данных.Чтобы решить эту проблему, нам нужно отключить поддержку Hive, так как я использую spark на своем Mac, это нормально.Поэтому я загружаю исходный файл spark и собираю его самостоятельно, используя команду ./make-distribution.sh --name hadoop-2.6_scala-2.11 --tgz -Pyarn -Phadoop-2.6 -Dscala-2.11 -DskipTests omits -Phive -Phive-thriftserver.Я протестировал самодельную искру, и папка metastore_db никогда не создавалась, и она такая жирная и хорошая.

Подробнее см. В этом посте: Prebuilt Spark 2.1.0 создает папку metastore_db и derby.лог при запуске спарк-снаряда

...