使用 Spark 查询位于远程集群上的 Hive 数据
Posted
技术标签:
【中文标题】使用 Spark 查询位于远程集群上的 Hive 数据【英文标题】:Querying Hive data located on a remote cluster using Spark [duplicate] 【发布时间】:2016-11-22 20:19:41 【问题描述】:我正在尝试编写一个简单的 Scala 代码来查询位于远程集群上的 Hive 数据。我的代码将部署到 clusterA,但必须查询位于 clusterB 上的 Hive 表。我正在我的本地 Eclipse 中开发它并收到以下错误
org.apache.spark.sql.AnalysisException: Table not found: `<mydatabase>`.`<mytable>`;
我的代码的相关部分如下
val conf = new SparkConf().setAppName("Xing")
.setMaster("local[*]")
conf.set("hive.metastore.uris","thrift://<clusterB url>:10000")
val sc = SparkContext.getOrCreate(conf)
val hc = new HiveContext(sc)
val df = hc.sql("select * from <mydatabase>.<mytable>")
我怀疑这是配置问题,但我可能错了。任何建议将不胜感激。
【问题讨论】:
你能运行beeline并访问同一个HiveServer/database/table吗? 我可以使用 Hive JDBC 毫无问题地查询此表。此集群具有 Kerberos 安全设置。我试图在 SparkConf 中设置相同的属性,但出现了同样的错误。这些是我设置的属性: conf.set("login.user","元存储 URL 中的端口应为 9083,除非您故意更改它。 10000 用于 hiveserver2。
【讨论】:
感谢您指出这一点。但是,我在任一端口都遇到了同样的错误以上是关于使用 Spark 查询位于远程集群上的 Hive 数据的主要内容,如果未能解决你的问题,请参考以下文章
Spark 本地连接远程服务器上带有kerberos认证的Hive
本地Spark连接远程集群Hive(Scala/Python)
二次开发Spark实现JDBC读取远程租户集群Hive数据并落地到本集群Hive的Hive2Hive数据集成Java