R和hive连接

81 篇文章 2 订阅
78 篇文章 17 订阅
1.R和hadoop的应用

(1)R直接读取HDFS的数据

(2)R连接Hive使用Hadoop的数据

(3)R通过SparkR使用Spark来处理Hadoop的数据

(4)R连接HBase使用Hadoop的数据

1.R和hive的应用

R连接Hive是通过JDBC接口来进行操作。Hive组件通过一个名为HiServer2的服务来提供JDBC接口。假设启动HiServer2的机器的IP地址为192.168.1.101,端口号为10000(默认端口),那么在192.168.1.101上运行beeline工具可以测试JDBC服务是否正常。beeline是Hive组件提供的一个sql客户端,可以通过JDBC接口连接到Hive服务。用beeline测试的结果如下:

[root@hadoop1 ~]# beeline -u jdbc:hive2://192.168.1.101:10000 -n mr
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/hdp/2.6.1.0-129/hbase/lib/phoenix-4.14.1-HBase-1.1-client.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/hdp/2.6.1.0-129/hbase/lib/phoenix-4.14.1-HBase-1.1-hive.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/hdp/2.6.1.0-129/hadoop/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
Connecting to jdbc:hive2://192.168.1.101:10000
19/03/06 15:06:34 [main]: WARN jdbc.HiveConnection: Failed to connect to 192.168.1.101:10000
Error: Could not open client transport with JDBC Uri: jdbc:hive2://192.168.1.101:10000: java.net.NoRouteToHostException: No route to host (state=08S01,code=0)
Beeline version 1.2.1000.2.6.1.0-129 by Apache Hive
0: jdbc:hive2://192.168.1.101:10000 (closed)> 
0: jdbc:hive2://192.168.1.101:10000 (closed)> 

mr为hive的用户名。如果连接成功表示Hive的JDBC服务运行正常,这是我们使用R连接Hive的前提条件
R语言访问关系型数据库需要下载如下包:

rJava:R调用Java的类所需要的包

DBI:R访问关系型数据库的接口

RJDBC:RJDBC访问数据库的包

以上包可以通过执行如下脚本安装:

install.package("rJava")
install.package("DBI")
install.package("RJDBC")
library('rJava')
library('DBI')
library('RJDBC')

下载所需要的R包以后,还需要将集群中Hive JDBC的驱动包拷贝出来放在R程序所在的本地。具体步骤为:

在hive的安装目录lib下面一般有一个jdbc-standalone的jar,类似如下名字:
hive-jdbc-1.2.1000.2.4.2.0-258-standalone.jar
在hadoop的安装目录lib下有一个hadoop-common的jar,类似如下名字:
hadoop-common-2.7.1.2.4.2.0-258.jar
以上jar包的名字根据Hadoop的版本不同而不同,将以上两个jar包拷贝到R所在的系统目录下,假设目录为D:\RHive,在R中可以通过setwd函数将工作目录切换到jar包所在的目录:

  setwd("D:\\RHive")

然后执行如下R脚本完成到Hive的连接:

drv <- JDBC(“org.apache.hive.jdbc.HiveDriver”, “hive-jdbc-1.2.1000.2.4.2.0-258-standalone.jar;hadoop-common-2.7.1.2.4.2.0-258.jar”)  ###测试加载驱动
conn <- dbConnect(drv, “jdbc:hive2://IP:10000”, “mr”, “”)   ###建连接
dt = dbGetQuery(conn,“select * from hive.student limit 10”)   ###测试连接
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
ORC和Parquet是两种常见的列式存储文件格式,它们在不同的情况下具有适用条件。 ORC文件格式适用条件: - 处理大规模数据:ORC文件格式在处理大规模数据时表现出色。它使用列式存储和压缩技术,可以减少I/O操作和存储空间,提高查询性能。 - 复杂的数据结构:如果你的数据包含复杂的数据结构(如嵌套的结构、复杂的数据类型等),ORC文件格式可以更好地支持这些数据类型,并提供更高的查询效率。 - 实时查询:ORC文件格式支持谓词下推和列式存储,这使得它在实时查询场景下表现出色。 Parquet文件格式适用条件: - 高度压缩和列式存储:Parquet文件格式使用列式存储和高效的压缩算法,可以显著减少存储空间,并提供更快的查询性能。 - 多语言支持:Parquet文件格式支持多种编程语言(如Java、Python、R等),这使得它更易于与不同的数据处理框架集成。 - 复杂分析查询:如果你需要进行复杂的分析查询,如聚合、过滤和连接等操作,Parquet文件格式可以提供更高的查询性能。 - 列式存储的优势:由于Parquet使用列式存储,它在处理大规模数据时可以减少I/O操作,并且可以仅读取所需的列,从而提高查询效率。 总的来说,ORC和Parquet文件格式都适用于大规模数据处理和复杂查询分析,但根据具体的使用场景和需求,你可以选择适合你的文件格式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值