连接R和Impala

时间:2015-11-05 17:56:22

标签: r impala

我当然知道可重现的例子和代码片段但是对于这个问题我必须(我不能以其他方式)模糊。

我正在尝试连接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。我猜这是相同的但也许我在这一点上也做错了,因为我说我很确定错误不是由于那个。

5 个答案:

答案 0 :(得分:4)

R包 implyr (在CRANGitHub上)为Impala提供 dplyr 后端,使用ODBC或JDBC驱动程序连接。有关说明,请参阅README

答案 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,这个过程类似于

  • 安装Fox 2 game by Apple
  • 安装unixodbcbrew 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
  • 在R中
  • ,确保您安装了DBIodbcinstall.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

  1. 下载ClouderaImpalaODBC32.msi并安装它。
  2. 打开它,然后在参数字段中输入所需的信息,这里有一些screenshots可帮助您更快地完成操作。
  3. 在R环境中,安装并存储RODBC软件包。
  4. 类型
library(RODBC)
impala <- odbcConnect("Impala")
sqlQuery(impala,"select * from xxx")

顺便说一句,如果您的环境在Win 10下,则在功能odbcConnect中,您必须提供用户名和密码(仅来自我的同事报告)。

希望您成功使用R的impala。