Sto tentando di connettersi a HiveServer2
tramite i driver JDBC
da R
utilizzando il pacchetto RJDBC
. Ho visto un'ampia spiegazione sul passaggio di argomenti aggiuntivi al wrapper dbConnect
per vari drivers
(What arguments can I pass to dbConnect?), ma sembra che la situazione con JDBCDriver
sia un po 'più complicata rispetto ad altri driver. Posso collegarmi a HiveServer2
sotto questo indirizzo URL specifico url = paste0("jdbc:hive2://", host = 'tools-1.hadoop.srv', ":", port = 10000, "/loghost;auth=noSasl")
. Il codice correspoding funziona e mi permette di scrivere istruzioni su Hive
da R
Passare parametri aggiuntivi alla funzione dbConnect per JDBCDriver in 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
Mi chiedo se c'è un modo per passare gli argomenti come il nome del database (loghost
) o un no_authentication_mode (auth=noSasl
) a ...
in dbConnect
tale che ho potuto specificare solo l'indirizzo URL standard (url = paste0("jdbc:hive2://", host = 'tools-1.hadoop.srv', ":", port = 10000)
) e in qualche modo passare il resto dei parametri predefiniti come questo
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
Ma il secondo approccio non sembra al lavoro, nonostante le varie combi nazioni di nomi e valori di argomenti addizionali che cerco.
Qualcuno sa come passare argomenti aggiuntivi a DBI :: dbConnect tramite il parametro ...
per JDBCDriver
?
In realtà l'URL potrebbe ottenere così complicato come 'JDBC: hive2: //: /; principal = alveare/_HOST @; ssl = true; sslTrustStore = ; trustStorePassword = ; transportMode = http; httpPath = 'con autenticazione Kerberos e trasporto HTTPS con certificati SSL fittizi. E ancora peggio quando si lancia l'High Availability basata sul quorum di ZooKeeper (non è uno scherzo, abbiamo tutti questi in Prod ...) –
Ho capito @SamsonScharfrichter :). È piuttosto interessante. Ma qual è la soluzione alla mia domanda? Come posso passare quei parametri? –
Non ho idea se e come, è possibile passare tutte queste opzioni/parametri URL come parametri JDBC. Le opzioni SSL sono effettivamente utilizzate dal driver, quindi è probabile che debbano essere impostate sull'URL; il database può essere modificato dinamicamente in qualsiasi momento usando una * istruzione * (ad esempio 'use MY_DB'); per il resto ... hai provato a connetterti con DBVisualizer o uno strumento simile, quindi controlla l'elenco dei parametri JDBC e i loro valori predefiniti? –