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

标签 java r hadoop jdbc hive

我正在尝试使用 RJDBC 包通过来自 RJDBC 驱动程序连接到 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/

相关文章:

r - 如何从 R 中的向量中选择矩阵中的行

Java XML 验证和 MTOM

r - R中geom_line顶部的geom_point覆盖

java - 将 JDBC 更改为 hibernate 后,应用程序运行速度非常慢

r - fread中的空白未被识别为NA

java - hbase Java程序eclipse未运行

java - 使Spring-XD和hdfs下沉适用于maprfs

java - 使用 hadoop 运行 jar 时 NoSuchMethodError Sets.newConcurrentHashSet()

java - 计算两个 unix 时间戳的时间差并在 Java 中转换为分钟

java - 为 Lotus Notes 表单动态创建 java 类