2013-08-22 2 views
0

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 요구 사항에 따라 소스에서 근검을 만들었습니다

답변

0

Revolution Analytics는 최근 'char'라는 세 번째 종류의 직렬화를 발표했습니다. 이 문제를 해결합니다.

hb.init(hostloc,port,'char') 
관련 문제