R 中的 ODBC 库 - 获取“未找到数据源名称且未指定默认驱动程序”错误
Posted
技术标签:
【中文标题】R 中的 ODBC 库 - 获取“未找到数据源名称且未指定默认驱动程序”错误【英文标题】:ODBC Library in R - getting "Data source name not found and no default driver specified" Error 【发布时间】:2020-05-15 00:16:26 【问题描述】:我的驱动程序可以正常工作,因为我完美地使用了 Power BI。我正在切换到 R 进行一些计算,现在这个错误正在蔓延
install.packages("odbc")
library(odbc)
con<- dbConnect(odbc::odbc(),
driver = "[Cloudera ODBC Driver for Apache Hive]",
host = "[Confidential]",
Schema = "[Confidential]",
user = ("Confidential"),
password = ("Confidential"),
port = 8443)
我的 ODBC 连接是 64 位
我需要在这里使用特定的连接字符串吗?
【问题讨论】:
我不使用RODBC
,但我使用odbc
和DBI
,而且我在任何地方都没有看到驱动程序名称周围的括号。您是否尝试过不带括号的"Cloudera ..."
?如果您出于某种原因安装了odbc
,我知道它有odbc::odbcListDrivers()
,它为您提供了可以使用的逐字字符串。
你是对的,不需要括号。它至少进展到下一个错误,它说从服务器收到意外响应。请确保为连接指定的服务器主机和端口正确,并确认是否应为连接启用 SSL...但这与上一个不同,谢谢!
是的,该端口有效,因为我每天都使用 Power BI 连接到企业数据湖。这是 IT 部门给我们的
好。接下来是你的连接。您在此处的代码未使用您在 ODBC 管理(Windows?)中设置的 ODBC 连接。如果您想使用 那个 配置,您需要按名称引用它,而不是在此处提供所有配置选项。例如,如果它在您的系统 ODBC 配置中命名为 myhive
,请尝试使用 con <- DBI::dbConnect(odbc::odbc(), dsn="myhive", UID="myuser", PWD="mypass")
。 (这使您可以使用与您的 Power BI 连接相同的 SSL/... 设置。)
完美。把它放到我的 R 中。你能在下面发布你的答案,我会接受吗?
【参考方案1】:
这里有四个问题需要考虑:
最初,驱动程序周围有支架,需要移除。
# original
con<- dbConnect(odbc::odbc(),
driver = "[Cloudera ODBC Driver for Apache Hive]", ...)
# fixed
con<- dbConnect(odbc::odbc(),
driver = "Cloudera ODBC Driver for Apache Hive", ...)
我怀疑错误的标签user=
和password=
需要更改。根据https://db.rstudio.com/databases/hive/,我认为它们应该分别是UID=
和PWD=
。
由于连接错误提示存在连接加密 (SSL) 问题,因此应向 DBI::dbConnect
提供更多参数以设置正确选项。老实说,我不知道它们是什么,而且我找不到关于它们是什么的文档,所以我忽略了这个问题。关于第 4 期...
您说您是在 “ODBC 数据源管理器(64 位)”中配置的,它是命名连接的系统范围配置,并且您将此配置用于 Power BI(表示那里的连接良好)。在上面的代码中,您没有使用该系统配置,而是从头开始定义它。由于已知系统配置可以工作,因此您可以使用它而不是重新定义,如
con <- DBI::dbConnect(odbc::odbc(), dsn = "myhive", UID = "myuser", PWD = "mypass")
其中myhive
是您在 ODBC 数据源管理中为配置指定的名称。
【讨论】:
以上是关于R 中的 ODBC 库 - 获取“未找到数据源名称且未指定默认驱动程序”错误的主要内容,如果未能解决你的问题,请参考以下文章
Odbc 连接 - [ODBC 驱动程序管理器] 未找到数据源名称且未指定默认驱动程序
错误:[Microsoft][ODBC Driver Manager] 未找到数据源名称且未指定默认驱动程序