복붙노트

[HADOOP] RJDBC / RHive를 사용하여 R에서 원격 하이브 서버에 연결

HADOOP

RJDBC / RHive를 사용하여 R에서 원격 하이브 서버에 연결

나는 RstDBC의 하이브에 연결하기 위해 RJDBC 0.2-5를 사용하고 있습니다. 내 서버에는 hadoop-2.4.1 및 hive-0.14가 있습니다. 아래의 하이브에 연결하는 방법을 설명합니다.

library(DBI)
library(rJava)
library(RJDBC)
.jinit(parameters="-DrJava.debug=true")
drv <- JDBC("org.apache.hadoop.hive.jdbc.HiveDriver", 
            c("/home/packages/hive/New folder3/commons-logging-1.1.3.jar",
              "/home/packages/hive/New folder3/hive-jdbc-0.14.0.jar",
              "/home/packages/hive/New folder3/hive-metastore-0.14.0.jar",
              "/home/packages/hive/New folder3/hive-service-0.14.0.jar",
              "/home/packages/hive/New folder3/libfb303-0.9.0.jar",
              "/home/packages/hive/New folder3/libthrift-0.9.0.jar",
              "/home/packages/hive/New folder3/log4j-1.2.16.jar",
              "/home/packages/hive/New folder3/slf4j-api-1.7.5.jar",
              "/home/packages/hive/New folder3/slf4j-log4j12-1.7.5.jar",
              "/home/packages/hive/New folder3/hive-common-0.14.0.jar",
            "/home/packages/hive/New folder3/hadoop-core-0.20.2.jar",
            "/home/packages/hive/New folder3/hive-serde-0.14.0.jar",
             "/home/packages/hive/New folder3/hadoop-common-2.4.1.jar"),
            identifier.quote="`")

conHive <- dbConnect(drv, "jdbc:hive://myserver:10000/default",
                  "usr",
                  "pwd")

하지만 난 항상 다음과 같은 오류가 발생하고 있습니다 :

심지어 Hive jar, Hive-jdbc-standalone.jar의 다른 버전을 사용해 보았지만 아무것도 작동하지 않는 것 같습니다. 또한 하이브에 연결하기 위해 RHive를 사용하지만 성공도 없었습니다.

아무도 나를 도울 수 있습니까? .. 나는 일종의 붙어 :(

해결법

  1. ==============================

    1.rHive는 클러스터의 모든 노드에 복잡한 설치가 필요하기 때문에 시도하지 않았습니다.

    rHive는 클러스터의 모든 노드에 복잡한 설치가 필요하기 때문에 시도하지 않았습니다.

    JDBC를 사용하여 Hive에 성공적으로 연결했습니다. 다음은 Hadoop 2.6 CDH5.4 클러스터에서 작동하는 코드 단편입니다.

    #loading libraries
    library("DBI")
    library("rJava")
    library("RJDBC")
    
    #init of the classpath (works with hadoop 2.6 on CDH 5.4 installation)
    cp = c("/usr/lib/hive/lib/hive-jdbc.jar", "/usr/lib/hadoop/client/hadoop-common.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")
    .jinit(classpath=cp)
    
    #initialisation de la connexion
    drv <- JDBC("org.apache.hive.jdbc.HiveDriver", "/usr/lib/hive/lib/hive-jdbc.jar", identifier.quote="`")
    conn <- dbConnect(drv, "jdbc:hive2://localhost:10000/mydb", "myuser", "")
    
    #working with the connexion
    show_databases <- dbGetQuery(conn, "show databases")
    show_databases
    

    더 힘들어지면 모든 항아리를 찾을 수 있으며 어디에서 찾을 수 있습니까?

    최신 정보 하이브 독립 실행 형 JAR에는 하이브를 사용하는 데 필요한 모든 것이 포함되어 있습니다.이 독립 실행 형 JAR을 hadoop-common jar와 함께 사용하면 하이브를 사용할 수 있습니다.

    그래서 이것은 단순화 된 버전이며, 다른 항아리들에 대해 hadoop-common과 hive-standalone jar를 걱정할 필요가 없습니다.

     #loading libraries
     library("DBI")
     library("rJava")
     library("RJDBC")
    
     #init of the classpath (works with hadoop 2.6 on CDH 5.4 installation)
     cp = c("/usr/lib/hadoop/client/hadoop-common.jar", "/usr/lib/hive/lib/hive-jdbc-standalone.jar")
     .jinit(classpath=cp)
    
     #initialisation de la connexion
     drv <- JDBC("org.apache.hive.jdbc.HiveDriver", "/usr/lib/hive/lib/hive-jdbc-standalone.jar", identifier.quote="`")
     conn <- dbConnect(drv, "jdbc:hive2://localhost:10000/mydb", "myuser", "")
    
     #working with the connexion
     show_databases <- dbGetQuery(conn, "show databases")
     show_databases
    
  2. ==============================

    2.Ioicmathieu의 대답은 예를 들어 3.1.1에서 2.0.0으로 이전 하이브 항아리로 바꾼 후에 지금은 저에게 도움이됩니다.

    Ioicmathieu의 대답은 예를 들어 3.1.1에서 2.0.0으로 이전 하이브 항아리로 바꾼 후에 지금은 저에게 도움이됩니다.

    불행히도 나는 그의 대답에 대해 언급 할 수 없기 때문에 나는 다른 하나를 썼다.

    다음 오류가 발생하면 이전 버전을 사용해보십시오.

  3. from https://stackoverflow.com/questions/33007353/connect-to-remote-hive-server-from-r-using-rjdbc-rhive by cc-by-sa and MIT license