有谁知道如何实现这一目标?
我假设RJDBC会提供帮助;但是从我(可能是天真的)理解中,为此编写或调整Hive驱动程序需要进行一些调整。
相关文件:
欢迎任何帮助或建议!如果之前没有人这样做过,我会很乐意为解决方案编写一些代码,但我知道旁边没有Java。
答案 0 :(得分:2)
R可以通过RJDBC与Hive连接。但是,您需要一个Hive服务器和驱动程序。
Hive服务器:
hive --service hiveserver 1> /dev/null 2> /dev/null &
驱动程序:下载Toad for Cloud DBs http://www.toadworld.com/m/freeware/566.aspx,并使用其中包含的驱动程序(解压缩jar并查找下面的文件)。
下面是一个R函数,您可以定义该函数来创建与Hive服务器的连接。
hive_connection <- function( hostname= 'dlhive01.cloud.msrch', port= 10000, lib_dir ){
library( RJDBC )
hive_jars <- c('commons-logging-1.0.4.jar','hadoop-core-0.20.2+737.jar', 'hive-exec-0.7.1-cdh3u1.jar', 'hive-jdbc-0.7.1-cdh3u1.jar', 'hive-metastore-0.7.1-cdh3u1.jar', 'hive-service-0.7.1-cdh3u1.jar', 'libfb303.jar','libthrift.jar', 'log4j-1.2.15.jar', 'slf4j-api-1.6.1.jar', 'slf4j-log4j12-1.6.1.jar' )
# lib_dir: directory containing the jars above.
hive_class_path <- sprintf( '%s/%s', lib_dir, hive_jars )
drv <- JDBC( 'org.apache.hadoop.hive.jdbc.HiveDriver', classPath= hive_class_path, "`" )
server <- sprintf( 'jdbc:hive://%s:%s/default', hostname, port )
return ( dbConnect( drv, server ) )
}
答案 1 :(得分:1)
我没有对这些进行测试,但请尝试使用RHIPE和hive个包。
有关其他选项的讨论,请参阅this quora question(特别是Jeff Hammerbacher的回答)。