使用jdbc将r连接到hive

3xiyfsfu  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(351)

我正在尝试使用rjdbc包将r连接到hive集群。
我写的代码是:

drv <- JDBC(driverClass = "org.apache.hive.jdbc.HiveDriver", 
        classPath = list.files("C:/hive-jdbc/hive-jdbc-0.10.0.jar",
                               pattern="jar$",full.names=T),
        identifier.quote="'")

我还向系统路径变量添加了“c:/hivejdbc”。
但我得到以下错误:

Error in path.expand(unlist(strsplit(classPath, .Platform$path.sep))) : 
  invalid 'path' argument

有人能帮我吗?

gfttwv5a

gfttwv5a1#

作为对prateek的回答——“class not found”,因为它不在jar文件中:在类路径中需要更多的jar文件。对我来说这是:

/usr/lib/hive/lib/hive-jdbc.jar
/usr/lib/hive/lib/libthrift-0.9.2.jar
/usr/lib/hive/lib/hive-service.jar
/usr/lib/hive/lib/httpclient-4.2.5.jar
/usr/lib/hive/lib/httpcore-4.2.5.jar
/usr/lib/hive/lib/hive-jdbc-standalone.jar
/usr/lib/hadoop/client/hadoop-common.jar

(其中一些文件引用是指向真实文件的符号链接-获取真实文件!)我还写了一篇关于如何让它工作的基本文章:https://pygot.wordpress.com/2016/10/13/connecting-r-studio-to-hadoop-via-hive/

b09cbbtk

b09cbbtk2#

在里面

classPath = list.files("C:/hive-jdbc/hive-jdbc-0.10.0.jar",
                               pattern="jar$",full.names=T)

你用 list.files . 第一个论点 list.files 应该是一个文件夹,你似乎给了它一个jar文件。它的输出是什么 list.files 你的系统有什么功能?可能是 character(0) . 那会把事情搞砸的 classPath . 解决这个问题-它不清楚你想要的价值 classPath 参数在这里。如果你想让一切 .jar 文件夹中的文件,然后

list.files("C:/wherever/", pattern="\.jar$", full.names=TRUE)

我应该这么做。如果只是一个jar文件,只需将其放入:

classPath="C:/hive-jdbc/hive-blahlah-999.jar"

在电话里。简单点!

相关问题