首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >连接R和Impala

连接R和Impala
EN

Stack Overflow用户
提问于 2015-11-05 17:56:21
回答 5查看 9.1K关注 0票数 2

当然,我知道可重复的例子和代码,但对于这个问题,我必须(我不能否则)晦涩难懂。

我正在尝试连接R和黑斑羚。抛开这些问题(“正式”,我不能在这台电脑上安装软件.但我使用了可移植版本的R和RStudio)

我试过RImpala包了。

代码语言:javascript
复制
rimpala.connect(IP = myip,
              port = the port where Impala sees,
              principal = maybe this is not clear)

我非常肯定,我的问题的原因是principal参数,文档对我来说并不清楚。不管怎么说,我已经尝试了几个组合的文件说,它应该放在那里。

在任何情况下,我都会得到相同的错误:

.jcall中的错误(“RJavaTools”,"Ljava/lang/Object;","invokeMethod",cl,:java.lang.IllegalArgumentException: Kerberos主体)应该包含三个部分: 10.60.10.22:8888/impala/@tempuser

我在网上搜索了这个错误,它似乎与一些java相关,但我对该语言一无所知。

知道我无法访问我的PC是有用的,比如说,我不能安装任何软件,或者做一件只有管理员才能做的事情。

我知道这个问题写得不好,但就像我说过的,这个可重复的例子是不可能的。

更多细节

现在我正在考虑这个问题,我在IP参数中填充了我在浏览器导航栏中看到的地址,以连接到Hue。我猜是一样的,但也许我在这一点上也做错了,因为我已经说过了,我很确定错误不是因为这个。

EN

回答 5

Stack Overflow用户

发布于 2016-08-19 09:08:29

与其使用RImpala包,不如使用RJDBC进行连接。您可以从cloudera网站下载最新的黑斑羚JDBC驱动程序jar文件:http://www.cloudera.com/downloads/connectors/impala/jdbc/2-5-5.html

然后将jar中的这些文件导入R并使用它们进行连接。

代码语言:javascript
复制
install.packages("rJava")

install.packages("DBI")

install.packages("RJDBC")

library(DBI)

library(rJava)

library(RJDBC)

cp <- c(        
           "C:/Users/Cloudera_ImpalaJDBC4_2.5.31/commons-codec-1.3.jar",
           "C:/Users/Cloudera_ImpalaJDBC4_2.5.31/commons-logging-1.1.1.jar",
           "C:/Users/Cloudera_ImpalaJDBC4_2.5.31/hive_metastore.jar",
           "C:/Users/Cloudera_ImpalaJDBC4_2.5.31/hive_service.jar",
           "C:/Users/Cloudera_ImpalaJDBC4_2.5.31/httpclient-4.1.3.jar",
           "C:/Users/Cloudera_ImpalaJDBC4_2.5.31/httpcore-4.1.3.jar",
           "C:/Users/Cloudera_ImpalaJDBC4_2.5.31/libfb303-0.9.0.jar",
           "C:/Users/Cloudera_ImpalaJDBC4_2.5.31/libthrift-0.9.0.jar",
           "C:/Users/Cloudera_ImpalaJDBC4_2.5.31/log4j-1.2.14.jar",
           "C:/Users/Cloudera_ImpalaJDBC4_2.5.31/ql.jar",
           "C:/Users/Cloudera_ImpalaJDBC4_2.5.31/slf4j-api-1.5.11.jar",
           "C:/Users/Cloudera_ImpalaJDBC4_2.5.31/slf4j-log4j12-1.5.11.jar",
           "C:/Users/Cloudera_ImpalaJDBC4_2.5.31/TCLIServiceClient.jar",
           "C:/Users/Cloudera_ImpalaJDBC4_2.5.31/zookeeper-3.4.6.jar"
)

.jinit(classpath<-cp)

drv <- JDBC("com.cloudera.impala.jdbc4.Driver", "C:/Users/Cloudera_ImpalaJDBC4_2.5.31/ImpalaJDBC4.jar")

con <- dbConnect(drv, "jdbc:impala://your_impala_host_address:21050;AuthMech= your authmech number if applicable", "username", "pwd")

data <- dbGetQuery(con, "SELECT * FROM mydb limit 25")

summary(data)
票数 5
EN

Stack Overflow用户

发布于 2017-06-23 20:58:43

R包implyr (on 克拉恩GitHub)为Impala提供了dplyr后端,使用ODBC或JDBC驱动程序进行连接。有关说明,请参见自述文件

票数 5
EN

Stack Overflow用户

发布于 2017-09-02 01:31:48

我在R中成功地使用了ODBC连接器和odbc包,这个方法似乎没有任何隐式依赖项,是隐式包的作者推荐的。根据我有限的经验,这个连接器在正确匹配R数据类型和Impala数据类型方面做得更好,使得R中的对象大小更小。

对于Mac电脑来说,这个过程就像,

Driver=/opt/cloudera/impalaodbc/lib/universal/libclouderaimpalaodbc.dylib

代码语言:javascript
复制
- `echo export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/opt/cloudera/impalaodbc/lib/universal >> ~/.bash_profile`
- create a `~/.odbcinst.ini` file with

驱动程序Impala=Installed Cloudera ODBC驱动程序Impala=Installed Cloudera ODBC驱动程序

-可以选择创建一个包含连接详细信息的~/.odbc.ini文件。在这里,我使用Kerberos:

impala驱动器= Cloudera驱动程序用于Impala数据库=主机=端口= KrbHostFQDN = KrbServiceName = KrbRealm = AuthMech =1

- source ~/.bash_profile以确保DYLD_LIBRARY_PATH被更新

  • 在R中,确保安装了DBIodbcinstall.packages(c("DBI", "odbc"))
  • 最后,为了在R中建立联系, 库( ODBC )库(ODBC) conn <- dbConnect(ODBC:ODBC(),Driver = "Cloudera驱动程序for Impala",#database = "",host = "",port =,KrbHostFQDN = "",KrbServiceName = "",KrbRealm = "",AuthMech=1)
  • 然后,为了找回一些东西, dd <- dbGetQuery(康涅狄格,“从my_awesome_db.my_awesome_table限制10中选择*;”)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33551542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档