美文网首页
R通过RJDBC链接Hive

R通过RJDBC链接Hive

作者: GYBE | 来源:发表于2019-01-24 16:44 被阅读0次

    笔主安装环境

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

    相关文章

      网友评论

          本文标题:R通过RJDBC链接Hive

          本文链接:https://www.haomeiwen.com/subject/qycujqtx.html