如何在 Zeppelin 中加载 hiveContext?

Posted

技术标签:

【中文标题】如何在 Zeppelin 中加载 hiveContext?【英文标题】:How to load hiveContext in Zeppelin? 【发布时间】:2018-01-09 06:38:25 【问题描述】:

我是 zeppelin 笔记本的新手。但是我注意到一件事,与 spark-shell hiveContext 不同的是,当我启动 notebook 时,不会在 zeppelin 中自动创建。

当我尝试在 zeppelin 中手动加载 hiveContext 时:

import org.apache.spark.sql.hive._
import org.apache.spark.sql.hive.HiveContext

val hiveContext = new HiveContext(sc)

我收到此错误

java.lang.RuntimeException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
    at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:522)
    at org.apache.spark.sql.hive.client.ClientWrapper.<init>(ClientWrapper.scala:204)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.apache.spark.sql.hive.client.IsolatedClientLoader.createClient(IsolatedClientLoader.scala:249)
    at org.apache.spark.sql.hive.HiveContext.metadataHive$lzycompute(HiveContext.scala:327)
    at org.apache.spark.sql.hive.HiveContext.metadataHive(HiveContext.scala:237)
    at org.apache.spark.sql.hive.HiveContext.setConf(HiveContext.scala:441)
    at org.apache.spark.sql.hive.HiveContext.defaultOverrides(HiveContext.scala:226)
    at org.apache.spark.sql.hive.HiveContext.<init>(HiveContext.scala:229)
    at org.apache.spark.sql.hive.HiveContext.<init>(HiveContext.scala:101)
    at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:33)
    at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:38)
    at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:40)
    at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:42)

我认为错误意味着以前的 metastore_db 不允许覆盖新的。

我使用的是 spark 1.6.1

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

检查您的 metastore_db 权限... 然后你在 REPL 模式下测试.. 那么你必须移动齐柏林飞艇。

【讨论】:

【参考方案2】:

请您尝试从 shell 连接 Hive。我只是想让你检查一下 Hive 是否安装正确,因为我曾经遇到过类似的问题。还尝试从 Scala shell 连接 Hive。如果它有效,那么它应该可以在 Zeppelin 上运行。

【讨论】:

我没有安装 hive。我真的需要 hive 才能在 zeppelin 中使用 hiveContext 吗? 是的,您需要安装 Hive。【参考方案3】:

尝试如下创建 HIVE 上下文:

PYSPARK 代码。

sc = SparkContext(conf=conf)

sc._jvm.org.apache.hadoop.hive.conf.HiveConf()

hiveContext = HiveContext(sc)

希望对你有帮助。

问候,

尼拉杰

【讨论】:

bhadnani 嗨,我在 scala 中做了同样的事情,但得到了这个错误

以上是关于如何在 Zeppelin 中加载 hiveContext?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在 EMR 中加载 install-interpreter.sh 文件以加载第 3 方解释器?

如何在模块中加载未知类?

如何在requireJS中加载JSONP?

如何在复合组件中加载资源包属性文件?

当枢轴选择更改时,如何在枢轴项目中加载图像后加载音频文件

如何在 R 中加载大数据? [复制]