<show table =“”> vora query throw无法启动数据库'metastore_db'

时间:2016-03-04 13:15:57

标签: scala apache-spark vora

我将非常感谢您对以下查询的回复。

我在vora中创建了几个表(例如test,addresses)。我能够在SHOW DATASOUCE中看到这些表的列表并查询它们。后来我重新启动了vora实例并以vora用户身份重新登录并启动了vora spark shell。我知道我不会在新shell中看到这个表,因为它不会出现在新的spark上下文中。但是我遇到了一些链接 <ClusterUtils.markAllHostsAsFailed()>将从元数据加载vora spark上下文中的所有表,但尽管有以下系列的命令执行

scala> import org.apache.spark.sql._
import org.apache.spark.sql._

scala> val SapSqlSc = new SapSQLContext(sc)

scala> import com.sap.spark.vora.client
import com.sap.spark.vora.client

scala> client.ClusterUtils.markAllHostsAsFailed()

scala> SapSqlSc.sql(s"""
     | SHOW DATASOURCETABLES
     | USING com.sap.spark.vora
     | OPTIONS
     | (
     | zkUrls "ip-x-x-x-1.ec2.internal:2181,ip-x-x-x-2.ec2.internal:2181",
     | namenodeurl "ip-x-x-x-1.ec2.internal:8020"
     | )
     | """.stripMargin).collect

我得到了以下错误和异常

16/03/04 11:56:24 ERROR Datastore.Schema: Failed initialising database.
Failed to start database 'metastore_db' with class loader org.apache.spark.sql.hive.client.IsolatedClientLoader$$anon$1@3d3efa54, see the next exception for details.
:
:
Caused by: java.sql.SQLException: Failed to start database 'metastore_db' with class loader org.apache.spark.sql.hive.client.IsolatedClientLoader $$anon$1@3d3efa54, see the next exception for details.at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)

1 个答案:

答案 0 :(得分:0)

错误通常是由同一个spark-shell中的多个SapSqlContext实例引起的。我怀疑在你的错误消息中你会看到这个错误:

Caused by: ERROR XSDB6: Another instance of Derby may have already booted the database /<path_to_metastore_db>/metastore_db.

背景:在Vora1.0中,SapSqlContext基于HiveContext - 它只能在spark-shell中实例化一次。从Vora1.1开始,SapSqlContext基于SQLContext,在一个会话中使用多个SapSqlContext时,不应再观察到该问题。

然而另一个问题是: 命令'client.ClusterUtils.markAllHostsAsFailed()'错误地包含在文档中,因为尚未启用该功能。我们将从文档中删除它,并在启用该功能后将其添加回来。 在此之前,如果您的Vora引擎(v2servers)已重新启动,则需要使用CREATE TABLE语句重新创建表。