gpt4 book ai didi

java - R和Hive连接-RJDBC + RHive

转载 作者:行者123 更新时间:2023-12-02 22:05:20 26 4
gpt4 key购买 nike

我在同一主机名上有R和Hive,并且我试图将两者连接,因此我可以直接从R访问Hive表。虽然我能够这样做(使用RHive),但无法与RJDBC连接。我这里有两个问题,现在解决两个问题中的任何一个都可以解决。

Issue1 ## 使用RHIVE在R和 hive 之间建立连接。我跑了一个简单的查询,

rhive.query("CREATE TABLE test AS SELECT * FROM table_name WHERE column1='ABC'")

这在所需的数据库中创建了所需的表,并且运行时间并不多
test123<-rhive.query("SELECT * FROM table_name WHERE column1='ABC'")

如果我尝试将结果保存到临时对象test123中,则此查询将花费大量时间
长。

我该如何解决?为什么会有如此大的差异?例如,test123
需要30分钟以上且仍未完成,而“temp”表需要1分钟以内

问题2 ## 我无法使用以下方法建立R和 hive 连接。
require(RJDBC)
cp <- c(list.files("/location/lib/hadoop/lib", pattern = "[.]jar", full.names=TRUE, recursive=TRUE),
list.files("/location/lib/hive/lib", pattern = "[.]jar", full.names=TRUE, recursive=TRUE), recursive=TRUE))
drv <- JDBC(driverClass = "org.apache.hadoop.hive.jdbc.HiveDriver", classPath = cp)

hiveconnection <- dbConnect(drv,"jdbc:hive://hostname.com:10000/default", "username", "password")

注意:jar文件是相同的,RHive或RJDBC,但是,我得到以下警告,Putty将其挂起。使用RHive时,我会收到相同的警告,但建立连接会更进一步。
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/cloudera/parcels/CDH-4.6.0-1.cdh4.6.0.p0.26/lib/hadoop/lib/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/cloudera/parcels/CDH-4.6.0-1.cdh4.6.0.p0.26/lib/hive/lib/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.

欢迎任何建议,非常感谢!

最佳答案

我用这个解决了第二个问题-

变更1:

添加hadoop-core .jar文件,它们丢失了

变更2:
drv <-JDBC(driverClass =“org.apache.hadoop.hive.jdbc.HiveDriver”,classPath = cp)

更改3:将连接URL更新为“jdbc:hive2://主机名:端口/默认”

关于java - R和Hive连接-RJDBC + RHive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24215218/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com