Java 如何使用Pig检查JSON中缺少的键?

Java 如何使用Pig检查JSON中缺少的键?,java,json,hadoop,apache-pig,elephantbird,Java,Json,Hadoop,Apache Pig,Elephantbird,我有一个具有不同模式的JSON文件 {"asin":"xxxxxx", "title":"xxxsomething"} {"asin":"yyyyy"} {"asin":"zzzzzz", "title":"zzzsomething"} 为此,我编写了一个pig脚本,它利用库加载JSON数据并将其转换为一个选项卡分隔的文件 但是,如果输入JSON文件中的一行缺少“title”键(上例中的第#2行),tvs文件也没有任何内容可以替代它,例如: xxxxxx xxxsomething yyyyy

我有一个具有不同模式的JSON文件

{"asin":"xxxxxx", "title":"xxxsomething"}
{"asin":"yyyyy"}
{"asin":"zzzzzz", "title":"zzzsomething"}
为此,我编写了一个pig脚本,它利用库加载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';

您可以简单地为此编写一个UDF,并设置一个条件,如果其中任何一个为空,则传递默认字符串。

您可以简单地为此编写一个UDF,并设置一个条件,如果其中任何一个为空,则传递默认字符串。

如何:
((chararray)$0#'title'为空)?“”:(chararray)$0#'title')
这个怎么样:
((((chararray)$0#'title')为空)?“”:(chararray)$0#'title')