0

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 をビルドしました

4

1 に答える 1

0

Revolution Analytics は最近、第 3 の種類のシリアル化である「char」をリリースしました。この問題を解決します。

hb.init(hostloc,port,'char')
于 2013-09-07T09:40:56.077 に答える