2016-03-04 61 views
0

我会很感激您对以下查询的回应。<show table> vora query throw无法启动数据库'metastore_db'

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

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 [email protected]3efa54, 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 [email protected], 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) 

回答

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 - 这只能在火花壳一次实例化。从Vora1.1开始,SapSqlContext基于SQLContext,并且在一个会话中使用多个SapSqlContext时不应该再观察问题。

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

+0

你是对的。我的putty会话已关闭,当我重新登录并启动新的Vora shell并创建了同样的SAP SQL上下文变量时,我遇到了上述问题。这是否意味着尽管元数据存储在zookeeper目录中,但我无法将表加载到spark shell中。我是否需要使用命令清理zookeeper目录,然后再次重新创建同一个表。如果是这种情况,我需要重新创建这些表,每次我倒下并带回vora实例。请纠正我的理解。 –

+0

直到Vora 1.1补丁1:如果您尚未重新启动Vora引擎,则可以使用'REGISTER TABLES'命令在当前Spark会话中注册现有表。如果您已重新启动Vora引擎,则需要重新创建表格。另见http://stackoverflow.com/questions/34784246/vora-tables-in-zeppelin-and-spark-shell。有了Vora1.2,我们计划提供一种在Vora引擎重新启动后重新载入表的方法 - 类似于上面的markAllHostsAsFailed。 –

+0

感谢Frank提供宝贵的信息。我需要一个关于vora功能的更多信息。根据我的知识,Vora 1.0目前支持UDFS中的父子层次结构和相关内置功能。是否有任何版本的vora支持级别层次结构? –

相关问题