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

Mar*_*ski 7 java hadoop hive r jdbc

我试图HiveServer2通过使用包连接到via JDBC驱动程序.我已经看到了关于将各种参数传递给各种包装器的广泛解释(我可以将哪些参数传递给dbConnect?),但是出现这种情况比其他驱动程序有点琐碎.我可以在这个特定的URL地址下连接.把对应的代码的工作,使我写的语句从RRJDBCdbConnectdriversJDBCDriverHiveServer2url = paste0("jdbc:hive2://", host = 'tools-1.hadoop.srv', ":", port = 10000, "/loghost;auth=noSasl")HiveR

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
Run Code Online (Sandbox Code Playgroud)

我想知道是否有来传递参数,如数据库名称(的方式loghost)或no_authentication_mode(auth=noSasl到)...dbConnect这样的,我只能指定标准的URL地址(url = paste0("jdbc:hive2://", host = 'tools-1.hadoop.srv', ":", port = 10000))和某种方式传递这样parametrs其余

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
Run Code Online (Sandbox Code Playgroud)

但是第二种方法看起来并不起作用,尽管我尝试了其他参数的名称和值的各种组合.

有谁知道如何通过传递额外的参数给DBI ::数据库连接...参数JDBCDriver

Mar*_*ski 1

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

简单地说,dbConnect 所做的就是收集您传递的所有内容(包括...)并将其全部收集到传递给驱动程序的 connect() 方法的属性字典 (java.util.Properties) 中。因此,您传递的任何命名参数都包含在内。所以唯一的特殊参数是直接传递的 url,其他所有内容都包含在属性中。如何解释它不在 RJDBC 的控制范围内 - 这完全取决于驱动程序。