如何获得Zeppelin独立服务才能看到Hive?

时间:2017-10-18 12:40:21

标签: apache-spark hive hortonworks-data-platform apache-zeppelin

我正在使用HDP-2.6.0.3,但我需要Zeppelin 0.8,所以我已将其作为独立服务安装。我跑的时候:

%sql 
show tables

我没有得到任何回报,当我运行Spark2 SQL命令时,我得到'table not found'。表可以在0.7 Zeppelin中看到,它是HDP的一部分。

任何人都可以告诉我我错过了什么,让Zeppelin / Spark看到Hive?

我为创建zep0.8而执行的步骤如下:

maven clean package -DskipTests -Pspark-2.1 -Phadoop-2.7-Dhadoop.version=2.7.3 -Pyarn -Ppyspark -Psparkr -Pr -Pscala-2.11

将/usr/hdp/2.6.0.3-8/zeppelin/conf中的zeppelin-site.xml和shiro.ini复制到/ home / ed / zeppelin / conf。

创建了/home/ed/zeppelin/conf/zeppeli-env.sh,其中我提出了以下内容:

export JAVA_HOME=/usr/jdk64/jdk1.8.0_112
export HADOOP_CONF_DIR=/etc/hadoop/conf
export ZEPPELIN_JAVA_OPTS="-Dhdp.version=2.6.0.3-8"

将/etc/hive/conf/hive-site.xml复制到/ home / ed / zeppelin / conf

编辑: 我也尝试过:

import org.apache.spark.sql.SparkSession
val spark = SparkSession
          .builder()
          .appName("interfacing spark sql to hive metastore without configuration file")
          .config("hive.metastore.uris", "thrift://s2.royble.co.uk:9083") // replace with your hivemetastore service's thrift url
          .config("url", "jdbc:hive2://s2.royble.co.uk:10000/default")
          .config("UID", "admin")
          .config("PWD", "admin")
          .config("driver", "org.apache.hive.jdbc.HiveDriver")
          .enableHiveSupport() // don't forget to enable hive support
          .getOrCreate()

同样的结果,并且:

import java.sql.{DriverManager, Connection, Statement, ResultSet}
val url = "jdbc:hive2://"
val driver = "org.apache.hive.jdbc.HiveDriver"
val user = "admin"
val password = "admin"
Class.forName(driver).newInstance
val conn: Connection = DriverManager.getConnection(url, user, password)

给出:

 java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
ERROR XSDB6: Another instance of Derby may have already booted the database /home/ed/metastore_db

修复错误:

val url = "jdbc:hive2://s2.royble.co.uk:10000"

但仍然没有表:(

2 个答案:

答案 0 :(得分:3)

这有效:

import java.sql.{DriverManager, Connection, Statement, ResultSet}
val url = "jdbc:hive2://s2.royble.co.uk:10000"
val driver = "org.apache.hive.jdbc.HiveDriver"
val user = "admin"
val password = "admin"
Class.forName(driver).newInstance
val conn: Connection = DriverManager.getConnection(url, user, password)
val r: ResultSet = conn.createStatement.executeQuery("SELECT * FROM tweetsorc0")

但是我很难将结果集转换为数据帧。我宁愿SparkSession工作,我得到一个数据帧,所以我今天晚些时候会添加赏金。

答案 1 :(得分:0)

我在Cloudera Hadoop中遇到了类似的问题。在我的情况下,问题是spark sql没有看到我的hive Metastore。因此,当我使用Spark Session对象进行spark SQL时,我看不到我以前创建的表。我设法通过添加zeppelin-env.sh

来解决它
export SPARK_HOME=/opt/cloudera/parcels/SPARK2/lib/spark2
export HADOOP_HOME=/opt/cloudera/parcels/CDH
export SPARK_CONF_DIR=/etc/spark/conf
export HADOOP_CONF_DIR=/etc/hadoop/conf

(我假设Horton Works这些路径是另外的东西)。我还在Interpreter UI中将spark.master从local [*]更改为yarn-client。最重要的是我在/ etc / spark / conf / 中手动复制了hive-site.xml,因为我觉得奇怪的是它不在那个目录中而且解决了我的问题。

所以我的建议是查看您的SPARK_CONF_DIR中是否存在hive-site.xml,如果不是手动添加它。我还为Horton Works和zeppelin找到了guide,以防这不起作用。