Как получить независимую услугу Zeppelin, чтобы увидеть Hive?

Я использую HDP-2.6.0.3, но мне нужен Zeppelin 0.8, поэтому я установил его как независимую службу. Когда я запускаю:

%sql 
show tables

Я ничего не получаю и получаю "таблица не найдена", когда я запускаю команды SQL Spark2. Таблицы можно увидеть в 0.7 Zeppelin, который является частью HDP.

Может ли кто-нибудь сказать мне, что мне не хватает, для Цеппелина/Спарка, чтобы увидеть Улей?

Шаги, которые я выполнил для создания zep0.8, следующие:

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

Скопирован zeppelin-site.xml и shiro.ini из /usr/hdp/ 2.6.0.3-8/zeppelin/conf в/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

EDIT: Я также пробовал:

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 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"

но все равно нет таблиц: (

Ответ 1

Это работает:

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 работал, и я получаю dataframe, поэтому сегодня я добавлю щедрость.

Ответ 2

У меня была аналогичная проблема в Cloudera Hadoop. В моем случае проблема заключалась в том, что искра sql не увидела моего метафора улья. Поэтому, когда я использовал объект Spark Session для искры 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 эти пути - это нечто другое). Я также изменяю spark.master от локального [*] до пряжи-клиента в Interpreter UI. Самое главное Я вручную скопировал hive-site.xml в /etc/spark/conf/ , потому что, хотя было странно, что он не был в этом каталоге и что решил мою проблему.

Итак, мой совет - посмотреть, существует ли hive-site.xml в вашем SPARK_CONF_DIR, и если не добавить его вручную. Я также нашел руководство для Horton Works и zeppelin в случае, если это не сработает.