如何使用Databricks查询外部配置单元表



我有一个Databricks集群在一些虚拟机上运行。我的组织有一个Hadoop集群,里面有一堆我想要的数据。我没有访问Hadoop集群的权限,只有一个JDBC URL(我所有的权限都已经整理好了,他们只给了我一个URL(。

我可以在本地机器(Dbeaver(上打开数据库管理工具,并成功查询Hive表。

然而,我很难使用Databricks和PySpark查询配置单元表。似乎要设置HiveContext的连接字符串,我通常会将其写入hive-site.xml文件中。但是Databricks没有给我这个选项。

我在蜂巢2.1.1&Databricks 6.4(包括Apache Spark 2.4.5、Scala 2.11(

现在我不知道如何简单地连接到我的蜂巢数据库。

# Spark context sc is implicit in Databricks
hive_context = spark.HiveContext(sc)
# I want to be able to do something like
df = hive_context.sql("SELECT...")

这是最反高潮的答案,但一直以来,这都是我组织内部的防火墙问题,而不是jar文件。我的组织根据需要允许和阻止访问不同的来源。尽管这很尴尬,但请相信我,从错误中看,这并不明显!

Databricks预装了许多这样的jar文件。因此,这个代码就足以一直建立连接。

import java.sql.DriverManager
val connection = DriverManager.getConnection("jdbc:hive2://hostname:10000/dbname", "usrname", "psswrd")
connection.isClosed()

这是我在谷歌上搜索错误并在包括SO在内的各种论坛上追踪线索的一个例子,但都无济于事。我与Databricks SME进行了交谈,以总结这个网络问题。

通过在sparksession生成器调用期间指定hive.metastore.uris的配置,将在从任何其他分发版运行时解决您的问题,但对于数据块,您必须编辑集群的spark config

你可以参考以下答案-

如何在没有Hive-site.xml的情况下将Spark SQL连接到远程Hive元存储(通过节俭协议(?

如何在Databricks集群中添加Spark配置

最新更新