3

我想在 Pig 中解析一串复杂的 JSON。具体来说,我希望 Pig 将我的 JSON 数组理解为一个包而不是单个字符数组。使用 JsonLoader 时,我可以通过指定架构轻松做到这一点,就像在这个问题中一样。有没有办法让 Pig 为我找出我的模式,或者在 Pig 解析字符串时指定它?我一直在使用JsonStringToMap,但找不到指定模式的方法,或者无法让它正确理解我的 JSON 数组是一个数组而不是单个字符数组。

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 回答