R通过RJDBC链接Hive

笔主安装环境

  • 系统版本
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包)


    R通过RJDBC链接Hive_第1张图片
  2. 以2.3.4版本为例, 下载apache-hive-2.3.4-bin.tar.gz

R通过RJDBC链接Hive_第2张图片

解压你下载的文件, 在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贴过去使用(-- 注符号不要有, 这里没有做这种情况的排除)

你可能感兴趣的:(R通过RJDBC链接Hive)