cassandra,使用bytebufferutil(org.apache.cassandra.utils)读取列类型map的值

b1uwtaje  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(333)

我正在开发hadoop在cassandra之上运行。一切都很顺利,但我现在遇到了一个我找不到解决办法的问题。
我的一个列包含一个集合,定义类似于: create table productUsage( .... products map, productcategories map )... 等。
在我的map/reduce map函数中,我需要从这些列中读取值,但无法解决如何将列数据(字节缓冲区)转换为可用的hashmap变量bytebufferutil函数似乎没有帮助。
我现在提取列值的map/reduceMap代码如下所示。。。

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());
} } 有人有什么想法吗?或者有人能给我指出正确的方向吗?
谢谢,格瑞

7vhp5slm

7vhp5slm1#

那我就把它作为回答。使用 MapType.getInstance(K-type,V-Type).compose(column.getValues()) 哪里 K-Type 以及 V-Type 是键和值的类的示例(例如 Int32Type.instance , UTF8Type.instance 等)

相关问题