我将非常感谢您对以下查询的回复。
我在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)
答案 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
语句重新创建表。