我如何让独立服务齐柏林飞艇看到Hive?

r8xiu3jd  于 2021-06-26  发布在  Hive
关注(0)|答案(2)|浏览(259)

我使用的是hdp-2.6.0.3,但我需要齐柏林飞艇0.8,所以我安装了它作为一个独立的服务。当我跑步时:

%sql 
show tables

当我运行spark2sql命令时,我什么也没有得到,并且得到了“table not found”。表格可以在hdp的0.7齐柏林飞艇中看到。
有人能告诉我我错过了什么吗,齐柏林飞艇/星火号能看到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

将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
编辑:我也尝试过:

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"

但还是没有table:(

vbkedwbf

vbkedwbf1#

这样做有效:

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

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

ev7lccsx

ev7lccsx2#

我在ClouderaHadoop中遇到了类似的问题。在我的例子中,问题是sparksql没有看到我的配置单元元存储。因此,当我将sparksession对象用于sparksql时,我看不到以前创建的表。我设法通过添加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

(我想对于霍顿的作品来说,这些路径是另一回事)。我还将spark.master从local[*]更改为解释器ui上的yarn客户端。最重要的是,我手动复制了/etc/spark/conf/中的hive-site.xml,因为我觉得奇怪的是它不在那个目录中,这就解决了我的问题。
因此,我的建议是查看spark\ conf\ dir中是否存在hive-site.xml,如果不存在,则手动添加它。我还找到了霍顿工厂和齐柏林飞艇的指南,以防这不起作用。

相关问题