筆主安裝環(huán)境
- 系統(tǒng)版本
macOS Mojave Version 10.14.2
- R版本
R version 3.5.2 (2018-12-20) -- "Eggshell Igloo"
Copyright (C) 2018 The R Foundation for Statistical Computing
Platform: x86_64-apple-darwin18.2.0 (64-bit)
依賴包安裝
install.packages('RJDBC')
RJDBC依賴| methods, DBI, rJava這三個包
驅動準備
連接前我們需要提前準備好一些jar包, 這些在官方均有下載: https://mirrors.tuna.tsinghua.edu.cn/apache/hive/
-
找到你線上Hive的版本去下載對應的版本(當然你也可以去線上Hive目錄下找到第2點的jar包)
- 以2.3.4版本為例, 下載apache-hive-2.3.4-bin.tar.gz

解壓你下載的文件, 在apache-hive-2.3.4-bin/lib 找到 jdbc相關的jar包, 記住這個位置.
我把jar包放置到
~/Downloads/Hive/目錄下了.
? lib pwd
/Users/用戶名/Downloads/apache-hive-2.3.4-bin/lib
? lib ll | grep jdbc
-rw-r--r--@ 1 用戶名 staff 113K Nov 1 05:22 hive-jdbc-2.3.4.jar
-rw-r--r--@ 1 用戶名 staff 42K Nov 1 05:23 hive-jdbc-handler-2.3.4.jar
連接Hive
建立連接
drv <- JDBC(
'org.apache.hive.jdbc.HiveDriver',
list.files("jar包目錄地址", pattern = "jar$", full.names = TRUE, recursive = TRUE)
)
conn <- dbConnect(drv, 'jdbc:hive2://hive地址:端口', '賬號', '密碼')
完成.
為了方便使用, 大家可以將其定義成一個函數, 只需要傳入sql直接返回相關數據
library(RJDBC)
HiveQuery <- function(sql) {
drv <- JDBC(
'org.apache.hive.jdbc.HiveDriver',
list.files("~/Downloads/Hive/", pattern = "jar$", full.names = TRUE, recursive = TRUE)
)
conn <- dbConnect(drv, 'jdbc:hive2://hive地址:端口', '賬號', '密碼')
detail <- dbGetQuery(conn, gsub('\t', '', gsub('\n', ' ', sql)))
return(detail)
}
注意: 傳入的sql我進行了gsub('\t', '', gsub('\n', ' ', sql)), 目的是為了去掉換行符和制表符, 這樣你就可以直接將你寫好的格式化sql貼過去使用(-- 注符號不要有, 這里沒有做這種情況的排除)
