连接 Impala 和 Impala

ma8fv8wu  于 2021-06-26  发布在  Impala
关注(0)|答案(5)|浏览(414)

我当然知道可复制的例子和一段代码,但对于这个问题,我必须(我不能)含糊不清。
我想把 Impala 和 Impala 联系起来。撇开这些问题不谈(“正式”),我不能在这台电脑上安装软件。。。但我使用了可移植版本的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/impala/@tempuser
我在网上搜索过这个错误,它似乎与一些java的东西有关,但我对这种语言一无所知。
如果知道我不能访问我的电脑,比如说,我不能安装任何软件或者做只有管理员才能做的事情,那会很有用。
我知道这个问题写得不好,但正如我在这一次所说的,一个可复制的例子是不可能的。

更多细节

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

py49o6xq

py49o6xq1#

只是想用另一种方式访问类路径,而不是编写所有jar:

drv <- JDBC(driverClass = "com.cloudera.impala.jdbc3.Driver", 
        classPath = list.files("C:/Users/Impala",
                               pattern="jar$",full.names=T),
        identifier.quote="'")
slwdgvem

slwdgvem2#

r包implyr(在cran和github上)为impala提供了dplyr后端,使用odbc或jdbc驱动程序进行连接。有关说明,请参阅自述文件。

dgsult0t

dgsult0t3#

我成功地使用了odbc连接器和 odbc Package 在r。这个方法似乎没有任何java依赖项,是由implyr包的作者推荐的。根据我有限的经验,这个连接器在正确匹配r数据类型和impala数据类型方面做得更好,从而使r中的对象大小更小。
对于Mac来说,这个过程就像,
安装cloudera odbc连接器
安装 unixodbc : brew install unixodbc 请遵循《cloudera odbc连接器安装指南》 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` 已更新
在r中,确保 `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;")

i7uq4tfw

i7uq4tfw4#

与其使用rimpala包,不如使用rjdbc连接。您可以从cloudera网站下载最新的impala jdbc驱动程序jar文件:http://www.cloudera.com/downloads/connectors/impala/jdbc/2-5-5.html
然后将jar中的这些文件导入到r并使用它们进行连接。

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)
uqcuzwp8

uqcuzwp85#

使用rodbc包。我成功地在生产中使用了它。在这里,我写了一个教程。从这个博客
下载clouderaimpalaodbc32.msi并安装它。
打开它并在参数字段中键入所需的信息,这里有一些屏幕截图可以帮助您更快地完成。
在r环境中,安装并库rodbc包。
类型,

library(RODBC)
impala <- odbcConnect("Impala")
sqlQuery(impala,"select * from xxx")

顺便说一下,如果您的环境低于win 10 odbcConnect ,您必须提供您的用户名和密码(仅来自我的同事报告)。
我希望你成功地使用 Impala 的r。

相关问题