当前位置: 首页 > 知识库问答 >
问题:

通过JDBC访问非托管(外部)Azure Databricks配置单元表

薛华容
2023-03-14

我正在将 Azure 数据砖与数据砖运行时 5.2 和 Spark 2.4.0 配合使用。我以两种不同的方式设置了外部 Hive 表: - 数据砖增量表,其中数据存储在 Azure 数据湖存储 (ADLS) 第 2 代中,该表是使用位置设置创建的,该位置设置指向 ADLS 第 2 代中的已装载目录。- 一个常规的数据帧,作为表保存到 ADLS Gen 2,这次不使用挂载,而是使用我使用 spark.sparkContext.hadoop 配置在集群级别设置的 OAuth2 凭据

挂载点和直接访问(hadoopConfiguration)都已经使用OAuth2凭据和Azure AD服务主体进行了配置,后者拥有对数据湖的必要访问权限。

这两个表在数据砖 UI 中都正确显示,并且可以查询。

这两个表在BI工具(Looker)中也可见,我已成功配置到我的Database ricks实例的JDBC连接。在此之后,差异开始了:

1)使用挂载点配置的表不允许我在BI工具中运行DESCRIBE操作,更不用说查询了。一切都以错误失败com.databricks.backend.daemon.data.common.InvalidMountException:在“/mnt/xxx”的挂载中使用路径 /mnt/xxx/yyy/zzz解析路径“/yyy/zzz”时出错

2)使用配置的表在没有装载点的情况下允许我运行DESCRIBE操作,但查询失败,并出现错误“Java . util . concurrent . execution exception:Java . io . io exception:没有UGI(基本令牌)(auth:SIMPLE)的主要组”。

从BI工具到Databricks中的托管表的JDBC连接和查询工作良好。

据我所知,在创建外部表,配置挂载点或OAuth2凭据时,我无法进行任何不同的配置。在我看来,使用 JDBC 时,挂载根本不可见,因此对基础数据源(ADLS Gen 2)的请求无法成功。另一方面,第二个场景(上面的数字2)有点令人费解,在我看来,这似乎是引擎盖下的某个地方,很深,我不知道该怎么办。

一个奇怪的事情也是我的用户名,它出现在场景2中。我不知道这是从哪里来的,因为在使用服务主体设置 ADLS 第 2 代访问时不涉及它。

共有1个答案

松翔
2023-03-14

我遇到了类似的问题,我通过在Databricks集群中添加此参数来解决它:

spark.hadoop.hive.server2.enable。doAs错误

参见:

断续器

 类似资料:
  • 我们有配置了FreeIPA的HDP-2.2集群。但当我们试图通过knox访问HiveJDBC时,我们面临着一个问题。以下是我们正在使用的JDBC URI: jdbc: hive2://xxxxxxxxx: 8443/; ssl=true; sslTrustStore=/var/lib/Knox/data/Security/keystore/gateway.jks; Trust StorePassw

  • 我使用Hortonworks Hadoop HDP-2.3.2.0-2950 Hive over Tez引擎 下面2个查询来自Java代码。 ——运行良好 ——失败并出现错误 我的代码:

  • 我正在我的ubuntu上运行Hive2,并尝试通过hive接口和Beeline\JDBC创建表。我通过配置单元接口创建表没有问题,但是当通过jdbc访问时,我得到一个权限被拒绝的错误。 从异常中,我看到它试图在一个不存在的目录中创建表(/user/hive/warehouse/...) 那么它为什么要在/user/hive/warehouse下创建metastore_db呢?

  • 问题内容: 我正在寻找一种在Java App(使用JDBC)中打开Access MDB文件的方法。 快速的Google搜索建议我为此需要JDBC-ODBC Bridge。 这是否意味着我需要配置要在其上运行应用程序的每个系统,以便为要打开的MDB提供ODBC DSN? 还有一个问题(因为我以前从未使用过ODBC):通信是通过某种套接字(以客户机/服务器方式)还是通过方法/函数调用(例如嵌入Derb

  • 我已经使用JDBC api连接到HIVE2,这里提到,它是成功的,所以为了方便访问,我想到创建一个webapp,使用JSP作为前端页面来输入服务器名称和查询。虽然从JSP页面到servlet的所有参数都被正确解析,但它在连接到配置单元服务器时引发了一个错误,这是将libthrift和配置单元JAR放置在WEB-INF/lib目录中的必要条件,我同时放置在WEB-INF/lib和classpath中

  • 问题内容: 我想做一些我认为并不困难的事情。 我有一个要打包为jar的应用程序,因为我有大约30个依赖项,并且我希望能够部署一个文件。 我有一些配置文件-一个属性文件和一个spring配置文件,以及我的log4 props文件- 我想在jar外部使用。我想我希望,如果我将它们与jar放在同一目录中,它将在运行时找到它们,但事实并非如此。 在开发过程中,我将这些文件放在eclipse项目的类路径的根