我正在尝试使用 RJDBC
包通过来自 R
的 JDBC
驱动程序连接到 HiveServer2
。我看到了关于将附加参数传递给各种 drivers
( What arguments can I pass to dbConnect? ) 的 dbConnect
包装器的广泛解释,但是 JDBCDriver
出现了这种情况比其他驱动程序要复杂一些。我可以在这个特定的 URL 地址下连接到 HiveServer2
url = paste0("jdbc:hive2://", host = 'tools-1.hadoop.srv', ":", port = 10000, "/loghost;auth=noSasl")
。相应的代码有效,使我能够从 R
Hive
上编写语句
library(RJDBC)
dbConnect(drv = JDBC(driverClass = "org.apache.hive.jdbc.HiveDriver",
classPath = c("/opt/hive/lib/hive-jdbc-1.0.0-standalone.jar",
"/usr/share/hadoop/share/hadoop/common/lib/commons-configuration-1.6.jar",
"/usr/share/hadoop/share/hadoop/common/hadoop-common-2.4.1.jar"),
identifier.quote = "`"), # to juz niekoniecznie jest potrzebne
url = paste0("jdbc:hive2://", host = 'tools-1.hadoop.srv', ":", port = 10000, "/loghost;auth=noSasl"),
username = "mkosinski") -> conn
我想知道是否有一种方法可以将数据库名称 (loghost
) 或 no_authentication_mode (auth=noSasl
) 等参数传递给 ...
在 dbConnect
这样我只能指定标准 URL 地址 (url = paste0("jdbc:hive2://", host = 'tools-1.hadoop.srv' , ":", port = 10000)
) 并像这样以某种方式传递其余参数
library(RJDBC)
dbConnect(drv = JDBC(driverClass = "org.apache.hive.jdbc.HiveDriver",
classPath = c("/opt/hive/lib/hive-jdbc-1.0.0-standalone.jar",
"/usr/share/hadoop/share/hadoop/common/lib/commons-configuration-1.6.jar",
"/usr/share/hadoop/share/hadoop/common/hadoop-common-2.4.1.jar"),
identifier.quote = "`"), # to juz niekoniecznie jest potrzebne
url = paste0("jdbc:hive2://", host = 'tools-1.hadoop.srv', ":", port = 10000),
username = "mkosinski", dbname = "loghost", auth = "noSasl") -> conn
但第二种方法看起来并不奏效,尽管我尝试了各种名称和附加参数值的组合。
有谁知道如何通过 ...
参数为 JDBCDriver
向 DBI::dbConnect 传递额外的参数?
最佳答案
根据作者的回答:https://github.com/s-u/RJDBC/issues/31#issuecomment-173934951
Simply anything - all that dbConnect does is to collect whatever you pass (including ...) and collect it all into a property dictionary (java.util.Properties) that is passed to the driver's connect() method. So any named argument you pass is included. So the only special argument is url which is passed directly, everything else is included in the properties. How that gets interpreted is out of RJDBC's hands - it's entirely up to the driver.
关于java - 将附加参数传递给 R 中 JDBCDriver 的 dbConnect 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34861844/