RHBase (RHadoop スイート) を使用して R から 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:
Ubuntu 12.04 LTS R: 3.0 Thrift 0.9.0 Java (必要な場合): OpenJDK 1.6
==> このコードはこの環境で正常に動作します。それは私のローカルマシンです。
環境 2 Ubuntu 12.04 LTS R: 2.15.2 Thrift 0.9.0 Java (必要な場合): Oracle Java 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 スイートにかなり慣れていないので、素朴な質問を許してください! また、追加情報が必要な場合は教えてください。
編集: Cloudera ディストリビューションではなく、HBase のスタンドアロン インスタンスがあります。RHbase の要求に応じて、ソースから thrift をビルドしました