0

感谢您对以下查询的回复。

我在 vora 中创建了几个表(例如测试、地址)。我能够看到这些表的列表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)
4

1 回答 1

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语句重新创建表。

于 2016-03-04T23:16:06.047 回答