现有脚本创建文本文件,每行包含一组 JSON 对象,例如,
[{"foo":1,"bar":2},{"foo":3,"bar":4}]
[{"foo":5,"bar":6},{"foo":7,"bar":8},{"foo":9,"bar":0}]
…
我想在 Pig 中加载这些数据,分解数组并处理每个单独的对象。
我看过在 Twitter 的Elephant Bird中使用 JsonLoader无济于事。它不会抱怨 JSON,但是在运行以下命令时我得到“成功读取 0 条记录”:
register '/tmp/elephant-bird/core/target/elephant-bird-core-4.3-SNAPSHOT.jar';
register '/tmp/elephant-bird/hadoop-compat/target/elephant-bird-hadoop-compat-4.3-SNAPSHOT.jar';
register '/tmp/elephant-bird/pig/target/elephant-bird-pig-4.3-SNAPSHOT.jar';
register '/usr/local/lib/json-simple-1.1.1.jar';
a = load '/path/to/file.json' using com.twitter.elephantbird.pig.load.JsonLoader('-nestedLoad=true');
dump a;
我也尝试正常加载文件,将每一行视为包含单列字符数组,然后尝试将其解析为 JSON,但我找不到似乎可以解决问题的预先存在的 UDF。
有任何想法吗?