Apache spark 齐柏林飞艇-无法实例化SessionHiveMetaStoreClient

Apache spark 齐柏林飞艇-无法实例化SessionHiveMetaStoreClient,apache-spark,hive,apache-zeppelin,Apache Spark,Hive,Apache Zeppelin,我想让齐柏林飞艇开始工作。但是当我运行一个笔记本两次时,第二次由于无法实例化org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient而失败。(完整日志在文章末尾) 这似乎是因为元存储中的锁没有被移除。还建议使用例如Postgres而不是Hive,因为它允许多个用户在齐柏林飞艇中运行作业 我制作了一个postgres数据库和一个指向该数据库的hive site.xml。我将这个文件添加到齐柏林飞艇的配置文件夹中,但也添加到Spark

我想让齐柏林飞艇开始工作。但是当我运行一个笔记本两次时,第二次由于
无法实例化org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
而失败。(完整日志在文章末尾)

这似乎是因为元存储中的锁没有被移除。还建议使用例如Postgres而不是Hive,因为它允许多个用户在齐柏林飞艇中运行作业

我制作了一个postgres数据库和一个指向该数据库的
hive site.xml
。我将这个文件添加到齐柏林飞艇的配置文件夹中,但也添加到Spark的配置文件夹中。同样在齐柏林飞艇的jdbc解释器中,我添加了与
hive site.xml
中类似的参数

但问题依然存在

错误日志:


hive site.xml:

尝试在Spark设置中使用Thrift服务器体系结构,而不是在无法生成多个会话的hive的单个实例JVM上工作

到蜂巢的连接主要有三种类型:

单个JVM-存储在本地仓库中的元存储,不允许多个会话

多个JVM-其中每个工作进程的行为都像一个元存储


Thrift服务器体系结构-多个用户可以访问SQL引擎并实现并行

停止齐柏林飞艇。转到Apache Zeppelin中的
bin
文件夹,尝试删除
metastore\u db

sudo rm-r元存储/
再次启动齐柏林飞艇,现在再试一次

 Another instance of Derby may have already booted the database
默认情况下,spark使用derby作为元数据存储,它只能为一个用户服务。似乎您启动了多个spark解释器,这就是为什么您会看到上面的错误消息。这里有两个解决方案

  • 如果不需要配置单元,请通过将zeppelin.spark.useHiveContext设置为false来禁用spark解释器中的配置单元
  • 设置支持多个用户的配置单元元数据存储。参考此

  • 你能再详细说明一下如何让节俭建筑继续发展吗?Atm我将我的hive-site.xml中的Thrift属性更改为localhost:9083,但它会导致连接问题。因为目前我收到一个由:MetaException引起的
    (消息:无法使用提供的任何URI连接到元存储。最近的故障:org.apache.thrift.transport.ttTransportException:java.net.ConnectException:连接被拒绝(连接被拒绝)
    因此,我假设我的Thrift出现问题?端口未打开时会发生连接被拒绝。是的,Thrift服务器似乎有问题。使用最新版本重新安装Thrift,并连接postgresDB更新的连接器。将zeppelin.spark.useHiveContext设置为false对我起到了作用。