Ich versuche, eine Verbindung zu HiveServer2
über JDBC
Treiber von R
mit RJDBC
Paket herzustellen. Ich habe eine breite Erklärung über die Übergabe zusätzlicher Argumente zu dbConnect
Wrapper für verschiedene drivers
(What arguments can I pass to dbConnect?) gesehen, aber es scheint, dass die Situation mit JDBCDriver
ist ein bisschen trickerer als für andere Treiber. Ich kann eine Verbindung zu HiveServer2
unter dieser spezifischen URL-Adresse url = paste0("jdbc:hive2://", host = 'tools-1.hadoop.srv', ":", port = 10000, "/loghost;auth=noSasl")
herstellen. Der correspoding Code funktioniert und ermöglicht es mir, Aussagen von R
Übergeben von zusätzlichen Parametern zur dbConnect-Funktion für 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
auf Hive
zu schreiben Ich frage mich, ob es einen Weg gibt, Argumente zu übergeben, wie Datenbankname (loghost
) oder einem no_authentication_mode (auth=noSasl
) zu ...
in dbConnect
solchen dass ich nur Standard-URL-Adresse (url = paste0("jdbc:hive2://", host = 'tools-1.hadoop.srv', ":", port = 10000)
) angeben konnte und irgendwie den Rest parametrs wie diese Arbeit
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
Aber der zweite Ansatz sieht nicht passieren, trotz der verschiedenen Kombi Nationen von Namen und Werte von zusätzlichen Argumenten versuche ich.
Kann jemand zusätzliche Argumente zu DBI :: dbConnect über ...
Parameter für JDBCDriver
übergeben?
Eigentlich könnte die URL so kompliziert, wie 'jdbc erhalten: hive2: //: /; Haupt = Nest/_HOST @; ssl = true; sslTrustStore = ; truststore = ; transportMode = http; httpPath = 'mit Kerberos-Authentifizierung und HTTPS-Transport mit Dummy-SSL-Zertifikaten. Und noch schlimmer, wenn wir High Availability basierend auf ZooKeeper-Quorum werfen (das ist kein Witz, wir haben all diese in Prod ...) –
Ich bekomme es @SamsonScharfrichter :). Das ist ziemlich interessant. Aber was ist die Lösung für meine Frage? Wie kann ich diese Params weitergeben? –
Ich habe keine Ahnung, ob und wie Sie alle diese URL-Optionen/Parameter als JDBC-Parameter übergeben können. Die SSL-Optionen werden tatsächlich vom Treiber verwendet, sodass sie wahrscheinlich auf die URL festgelegt werden müssen. die Datenbank kann jederzeit dynamisch geändert werden unter Verwendung einer * Anweisung * (d. h. 'MY_DB' verwenden); für den Rest ... haben Sie versucht, eine Verbindung mit DBVisualizer oder einem ähnlichen Tool herzustellen, dann überprüfen Sie die Liste der JDBC-Parameter und deren Standardwerte? –