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 Sequence として Accumulo に格納する必要があると思います。
何か案は ?