我能够使用 Avro JSON 规范(捆绑在 Gora 中)将 Apache Gora 作为 ORM 与 Accumulo 集成。当我使用原始数据类型(如 String、Integer 等)时,它工作得很好,但是一旦我将数据类型定义为 Array 或 Map,我就会遇到错误。
对于 Array ,当我尝试添加新元素时,Gora 会引发以下错误:
“org.apache.gora.persistency.ListGenericArray.add(Ljava/lang/Object;)Z”
使用 Map ,虽然我没有收到错误,但在提交后我只看到一个空的 JSON 对象 '{}' ...缺少键/值对。
这就是我的 JSON 规范的样子
{
"type": "record",
"name": "Sample",
"namespace": "com.sample.goraz",
"fields":
[
{"name": "first_name", "type": "string"},
{"name":"last_name","type":"string"},
{"name":"bucket","type":{"type":"map","values":"string"}},
{"name":"stack","type":{"type":"array","items":"int"}}
]
}
这是 Accumulo-Gora xml 映射
<root>
<gora-orm>
<class table="SampleCollection" keyClass="java.lang.String" name="com.sample.goraz.Sample">
<field name="first_name" family="f" qualifier="q1" />
<field name="last_name" family="f" qualifier="q2" />
<field name="bucket" family="f" qualifier="q3" />
<field name="stack" family="f" qualifier="q4" />
</class>
</gora-orm>
我正在使用 Accumulo 1.5 版和 Gora 0.3 版。我也尝试使用 Accumulo 版本 1.4.4,但面临同样的问题。
我不确定 Gora 是否支持 Map 或 Array 数据类型;我想它应该将复杂的数据类型转换为等效的 JSON 格式,并将其作为 Char 序列存储在 Accumulo 中。
有任何想法吗 ?