Cassandra,读取列类型映射的值<>使用ByteBufferUtil(org.apache.cassandra.utils)

时间:2014-03-13 16:18:38

标签: java hadoop mapreduce cassandra bytebuffer

我正在开发Hadoop在Cassandra上运行。它运行得很好,但我现在遇到了一个我无法找到解决方案的问题。

我的一个列包含一个集合,定义类似于:

create table productUsage( .... products map, productcategories map )...

在我的map / reduce map函数中,我需要读取这些列中的值,但是不能弄清楚如何将列数据(这是一个字节缓冲区)转换为可用的HashMap变量 - ByteBufferUtil函数似乎没有帮助。

我现有的map / reduce地图代码提取列值如下所示......

string productid; HashMap products;

for (Entry column : columns.entrySet()){

  if ("productid".equalsIgnoreCase(column.getKey())){
      productid = ByteBufferUtil.string(column.getValue());
  }

  if ("products".equalsIgnoreCase(column.getKey())){
      products = ???? //ByteBufferUtil.string(column.getValue());
  }        

if ("productid".equalsIgnoreCase(column.getKey())){ productid = ByteBufferUtil.string(column.getValue()); } if ("products".equalsIgnoreCase(column.getKey())){ products = ???? //ByteBufferUtil.string(column.getValue()); }

有没有人有任何想法,或者有人能指出我正确的方向吗?

由于 格里

1 个答案:

答案 0 :(得分:2)

我会把它留作答案。 使用MapType.getInstance(K-type,V-Type).compose(column.getValues())其中K-TypeV-Type是键和值类的实例(例如Int32Type.instanceUTF8Type.instance等)