我有一个示例代码,它使用 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 套件还很陌生,请原谅任何幼稚的问题!另外,请告诉我是否需要任何其他信息。
编辑:我有一个独立的 HBase 实例——不是 cloudera 发行版。我按照 RHbase 的要求从源头构建了 Thrift