笔主安装环境
- 系统版本
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贴过去使用(--
注符号不要有, 这里没有做这种情况的排除)