R Hive Thrift Client

时间:2013-07-19 20:32:22

标签: r hadoop hive thrift

我正在努力为我公司的R数据访问包添加HiveServer2支持。我很好奇生成R Thrift客户端的最佳方法是什么。我正在考虑在Java Thrift客户端上编写一个R包装器,类似于rhbase所做的,但如果可能的话,我更喜欢纯R解决方案。

注意事项:

  • HiveServer2 thrift服务器与原来的Hive Thrift服务器不同。
  • 我查看并使用了RHive包。在我遇到的其他问题中,它需要Hadoop和Hive的系统安装,这在R客户端机器上并不总是可用。
  • 我有些可怕 - 但目前已经足够 - 解决方法是将beeline客户端包含在某个R优点中。

1 个答案:

答案 0 :(得分:1)

对于Stackoverflow来说,这个问题的确切范围可能太宽泛了,问问者确认他放弃了此任务,但对于将来的读者来说,这可能是要寻找的东西:

从R中,您可以使用JDBC连接到Hive。

这并不是问名的真正目的,但是在大多数情况下,它应该可以达到目的。


解决方案中的关键部分是RJDBC包,这是在Cloudera Community

上找到的一些示例代码
library(DBI)
library(rJava)
library(RJDBC)
hadoop.class.path = list.files(path=c("/usr/hdp/2.4.0.0-169/hadoop"),pattern="jar", full.names=T);
hive.class.path = list.files(path=c("/usr/hdp/current/hive-client/lib"),pattern="jar", full.names=T);
hadoop.lib.path = list.files(path=c("/usr/hdp/current/hive-client/lib"),pattern="jar",full.names=T);
mapred.class.path = list.files(path=c("/usr/hdp/current/hadoop-mapreduce-client/lib"),pattern="jar",full.names=T);
cp = c(hive.class.path,hadoop.lib.path,mapred.class.path,hadoop.class.path)
drv <- JDBC("org.apache.hive.jdbc.HiveDriver","hive-jdbc.jar",identifier.quote="`")
conn <- dbConnect(drv, "jdbc:hive2://ixxx:10000/default", "hive", "hive")
show_databases <- dbGetQuery(conn, "show databases")

完全公开:我是cloudera的雇员。