我有一个不同架构的JSON文件。
{"asin":"xxxxxx", "title":"xxxsomething"}
{"asin":"yyyyy"}
{"asin":"zzzzzz", "title":"zzzsomething"}
我编写了一个使用twitter's elephant-bird库来加载JSON数据并将其转换为制表符分隔文件的猪脚本。
但是,如果输入JSON文件中的一行缺少“title”键(上例中的第2行),则tvs文件也没有代替它,例如:
xxxxxx xxxsomething
yyyyyy
zzzzzz zzzsomething
如果缺少特定密钥,我想提供自定义默认值。我怎么能用PigLatin做到这一点?
预期产出:
xxxxxx xxxsomething
yyyyyy default_string
zzzzzz zzzsomething
这是我的剧本:
REGISTER elephant-bird-elephant-bird-4.13/pig/target/elephant-bird-pig-4.13.jar;
REGISTER elephant-bird-elephant-bird-4.13/hadoop-compat/target/elephant-bird-hadoop-compat-4.13.jar;
REGISTER elephant-bird-elephant-bird-4.13/core/target/elephant-bird-core-4.13-thrift9.jar;
reviews = load '../data/Amazon/meta_Amazon_Instant_Video.json'
using com.twitter.elephantbird.pig.load.JsonLoader();
tabs = FOREACH reviews generate (chararray)$0#'asin' as asin_new, (chararray)$0#'title';
A = ORDER tabs BY asin_new;
DESCRIBE A;
STORE A INTO 'hdfs://localhost:9000/meta_Amazon_Instant_Video.tsv';
答案 0 :(得分:0)
你可以简单地为它编写一个UDF,并设置条件,如果其中任何一个为空,则传递默认字符串。