RHase (RHadoop Suite)를 사용하여 R의 HBase에 연결하는 샘플 코드가 있습니다. 하나의 환경에서 작동하고 다른 환경에서는 작동하지 않습니다.HBase에 데이터를 삽입하는 중 오류가 발생했습니다.
코드 :
# Location and port of the thrift server
hostLoc = '172.25.1.16'
port = 9090
require(rhbase)
#create new table with columns x,y and z
hb.new.table("mytable", "x","y","z",opts=list(y=list(compression='GZ')))
#insert some values into the table
hb.insert("mytable",list(list(10,c("x","y","z"),list("apple","berry","cherry"))))
hb.insert("mytable",list(list(20,c("x","y","z"),list(10001,14,575))))
hb.insert("mytable",list(list(30,c("x","y","z"),list("a string",1000.23,FALSE))))
이것은 매우 간단한 코드입니다,이 오류를 복제하려면이 옵션을 썼다.
환경 1 :
우분투 12.04 LTS R : 3.0 드리프트 0.9.0 자바 (필요한 경우는) : 오픈 JDK 1.6
==>이 코드는이 환경에서 잘 작동합니다. 내 로컬 컴퓨터입니다.
환경이 우분투 12.04 LTS R : 2.15.2 드리프트 (필요한 경우) 0.9.0 자바 : 오라클 자바 1.7
는 ==>이 원격 시스템입니다. 다음과 같은 오류가 발생합니다 :
Error in hb.insert("mytable", list(list(10, c("x", "y", "z"), list("apple", :
RAW() can only be applied to a 'raw', not a 'character'
두 경우 모두 원격 위치에서 HBase (0.94.7)에 연결 중입니다.
이 문제의 원인은 무엇입니까? 나는 Hbase와 RHadoop 스위트를 처음 접했고, 순진한 질문을 용서 해주세요! 또한 추가 정보가 필요한지 알려주세요.
편집 : 나는 HBase의 독립 실행 형 인스턴스를 가지고 있지만, cloudera 배포본이 아닙니다. RHbase 요구 사항에 따라 소스에서 근검을 만들었습니다