我正在尝试使用HiveServer2
JDBC
来自R
的{{1}}驱动程序连接到RJDBC
。我已经看到了关于为dbConnect
drivers
JDBCDriver
传递HiveServer2
包装器的其他参数的广泛解释,但似乎url = paste0("jdbc:hive2://", host = 'tools-1.hadoop.srv', ":", port = 10000, "/loghost;auth=noSasl")
的情况比其他情况有点棘手驱动程序。我可以在此特定网址Hive
下与R
相关联。对应的代码有效,使我能够在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
上编写语句
auth=noSasl
我想知道是否有办法将{@ 1}}中的数据库名称(...
)或no_authentication_mode(dbConnect
)等参数传递给url = paste0("jdbc:hive2://", host = 'tools-1.hadoop.srv', ":", port = 10000)
,以便我只能指定标准的URL地址(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
的{{1}}参数向DBI :: dbConnect传递其他参数?
答案 0 :(得分:1)
根据作者的回答:https://github.com/s-u/RJDBC/issues/31#issuecomment-173934951
简单地说 - dbConnect所做的就是收集你的任何东西 传递(包括...)并将其全部收集到属性字典中 (java.util.Properties)传递给驱动程序的connect() 方法。因此,包括您传递的任何命名参数。所以唯一的 特殊参数是直接传递的url,其他一切都是 包含在物业中。如何解释是出于 RJDBC的手 - 这完全取决于司机。