将附加参数传递给R中的JDBCDriver的dbConnect函数

时间:2016-01-18 18:44:31

标签: java r hadoop jdbc hive

我正在尝试使用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传递其他参数?

1 个答案:

答案 0 :(得分:1)

根据作者的回答:https://github.com/s-u/RJDBC/issues/31#issuecomment-173934951

  

简单地说 - dbConnect所做的就是收集你的任何东西   传递(包括...)并将其全部收集到属性字典中   (java.util.Properties)传递给驱动程序的connect()   方法。因此,包括您传递的任何命名参数。所以唯一的   特殊参数是直接传递的url,其他一切都是   包含在物业中。如何解释是出于   RJDBC的手 - 这完全取决于司机。