3

Pig で複雑な JSON の文字列を解析したいと考えています。具体的には、Pig に JSON 配列を単一の chararray としてではなく、バッグとして理解してもらいたいと考えています。JsonLoader を使用する場合、この質問のようにスキーマを指定することで簡単に実行できます。Pig に私のスキーマを理解させる方法や、Pig が文字列を解析するときにそれを指定する方法はありますか? 私は JsonStringToMap を使用してきましたがスキーマを指定する方法や、JSON 配列が単一の chararray ではなく配列であることを適切に理解させる方法が見つかりません。

4

1 に答える 1

4

Mozilla の Akela ライブラリで pig のJsonTupleMap()を使用することになりました。複雑な場合でもすべての JSON を解析し、スキーマを提供しない場合でもこれを実行することで、まさに私が望むことを実現します。私と同じ問題に遭遇した場合は、それを使用してください。

使用例:

REGISTER '/path/to/akela-0.5-SNAPSHOT.jar';
DEFINE JsonTupleMap com.mozilla.pig.eval.json.JsonTupleMap();
loaded = LOAD '$INPUT' AS (json_string:chararray, ...);
jsonified = FOREACH loaded GENERATE JsonTupleMap(json_string) AS json:map[], ...;
some_generate = FOREACH jsonified GENERATE json#'key'#'sub_key';
于 2013-05-20T04:31:34.003 に答える