R通過RJDBC鏈接Hive

筆主安裝環(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/

  1. 找到你線上Hive的版本去下載對應的版本(當然你也可以去線上Hive目錄下找到第2點的jar包)


  2. 以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貼過去使用(-- 注符號不要有, 這里沒有做這種情況的排除)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容