我当然知道可重现的例子和代码片段但是对于这个问题我必须(我不能以其他方式)模糊。
我正在尝试连接R和Impala。抛开问题(“正式”,我无法在这台PC上安装软件......但我使用的是R和RStudio的便携版本)
我尝试了RImpala包。
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主体应该有3个部分:10.60.10.22:8888 / immala / @ tempuser
我在网上搜索了这个错误,它似乎与某些java事物有关,但我对该语言一无所知。
知道我无法访问我的电脑会很有用,比如说,我无法安装任何软件或只做管理员可以做的事情。
我知道问题写得不好,但正如我在这个时候所说的那样,一个可以重复的例子是不可能的。
现在我正在思考它,我用IP
参数填充了我在浏览器导航栏中看到的地址以连接到Hue。我猜这是相同的但也许我在这一点上也做错了,因为我说我很确定错误不是由于那个。
答案 0 :(得分:4)
答案 1 :(得分:2)
如何使用RJDBC连接,而不是使用RImpala包。 您可以从cloudera网站下载最新的impala JDBC驱动程序jar文件: http://www.cloudera.com/downloads/connectors/impala/jdbc/2-5-5.html
然后将jar中的这些文件导入R并使用它们进行连接。
substr
答案 2 :(得分:2)
我在R中使用ODBC连接器和odbc
包已经成功。这种方法似乎没有任何Java依赖关系,并且是{{3}的作者推荐的包。根据我的有限经验,此连接器可以更好地将R数据类型与Impala数据类型正确匹配,从而在R中实现更小的对象大小。
对于Mac,这个过程类似于
unixodbc
:brew install unixodbc
关注implyr
echo export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/opt/cloudera/impalaodbc/lib/universal >> ~/.bash_profile
使用
创建~/.odbcinst.ini
文件
[ODBC Drivers]
Cloudera ODBC Driver for Impala=Installed
[Cloudera ODBC Driver for Impala]
Driver=/opt/cloudera/impalaodbc/lib/universal/libclouderaimpalaodbc.dylib
Description=Cloudera ODBC Driver for Impala
可选地,使用您的连接详细信息创建~/.odbc.ini
文件。在这里,我使用Kerberos:
[impala]
Driver = Cloudera ODBC Driver for Impala
Database =
Host =
Port =
KrbHostFQDN =
KrbServiceName =
KrbRealm =
AuthMech = 1
source ~/.bash_profile
以确保更新DYLD_LIBRARY_PATH
DBI
和odbc
:install.packages(c("DBI", "odbc"))
最后,要在R中建立连接,
library(DBI)
library(odbc)
conn <- dbConnect(odbc::odbc(),
driver = "Cloudera ODBC Driver for Impala",
#database = "",
host = "",
port = ,
KrbHostFQDN = "",
KrbServiceName = "",
KrbRealm = "",
AuthMech=1)
然后,要检索某些内容,
dd <- dbGetQuery(conn, "select * from my_awesome_db.my_awesome_table limit 10;")
答案 3 :(得分:1)
只是想用另一种方式来访问类路径而不是写所有的jar:
drv <- JDBC(driverClass = "com.cloudera.impala.jdbc3.Driver",
classPath = list.files("C:/Users/Impala",
pattern="jar$",full.names=T),
identifier.quote="'")
答案 4 :(得分:0)
使用RODBC包。 我在生产中成功使用了它。 在这里,我为此写下了一个教程。 从这个Blog
library(RODBC)
impala <- odbcConnect("Impala")
sqlQuery(impala,"select * from xxx")
顺便说一句,如果您的环境在Win 10下,则在功能odbcConnect
中,您必须提供用户名和密码(仅来自我的同事报告)。
希望您成功使用R的impala。