rstudio找不到r低版本_R本地連線Hive(Mac詳解)
阿新 • • 發佈:2021-01-04
技術標籤:rstudio找不到r低版本
目錄
- 準備工作
- 確認hive server2的ip、埠和訪問許可權
- Mac本地安裝Rstudio
- Rstudio安裝jar包
- 建立R連線hive指令碼函式
- 測試
- 呼叫R指令碼的函式
1 準備工作
1.1 確認hive server2的ip、埠和訪問許可權
- 找維護hadoop的同事, 確認hive server2的ip和埠
- 確認hive server的ip在本地能否ping通
開啟終端, 輸入ping ip地址
, 如出現下圖則表示能夠ping通,
3. 再次確認hive server2的埠在本地能否訪問
這裡需要用到telnet, 因此先在終端配置telnet
- 開啟終端, 輸入
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
- 下載成功後, 輸入
brew install telnet
- 使用telnet確認hive server2的埠在本地能否訪問, 因此繼續在終端輸入
telnet ip 埠
如果出現Connected to ip.
的提示則說明可訪問啦, 反之如果一直顯示Trying ip...
則說明不可訪問, 要麼是ip和埠錯誤, 要麼是可能沒有訪問的許可權, 需找hadoop同事確認清楚, 或者申請許可權去~
1.2 Mac本地安裝Rstudio
首先說明: R是執行環境, Rstudio是開發工具(為了方便使用R語言而生).
因此需先後安裝:
1) R語言環境: https://cran.r-project.org/
2) Rstudio: https://www.rstudio.com/products/rstudio/download/
1.3 Rstudio安裝jar包
在Rconsole輸入
install.packages('DBI') install.packages('rJava') install.packages('RJDBC') devtools::install_github("lengyuyeke/RHJDBC") #注意: 有的Rstudio版本不支援安裝RHJDBC,直接github上安裝可解決版本限制問題
2 建立R連線hive指令碼函式
可將以下另存為一個R指令碼, 比如起名叫function.R
, 之後每次連線hive的時候, 直接呼叫本地的該指令碼即可, 避免每次都寫一大坨.
options(java.parameters = "-Xmx8g") # set jvm
library(DBI)
library(RJDBC)
# 連線 Hive
init_jdbc <- function() {
require(RHJDBC)
cp <- dir(system.file("java", package = "RHJDBC"), full.names = TRUE) # you can use your own jdbc driver
.jinit(classpath = cp) # init
drv <- JDBC("org.apache.hive.jdbc.HiveDriver") # set driver
con <- dbConnect(drv,
"jdbc:hive2://ip:終端/default",
"username",
"password"
) # set connection,url,username,password
class(con) <- "JHDBCConnection" # change the class of con
con
}
# 查詢 Hive
get_hive_query <- function(query) {
print(query)
conn <- init_jdbc()
data <- try(dbGetQuery(conn, query), silent = TRUE)
dbDisconnect(conn)
if (class(data) %in% c("error", "try-error")) {
return()
}
if (nrow(data) > 0) {
colnames(data) <- gsub("(.*).(.*)", "2", colnames(data))
data.table::setDT(data)
data
}
}
3 測試
dat<- get_hive_query("select * from tmp.test")
4 呼叫R指令碼的函式
source("//Users/hanqianyun/Desktop/function.R")
dat<- get_hive_query("select * from tmp.test")
over~