如何使用pig检查json中缺少的键?

r1wp621o  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(344)

我有一个不同模式的json文件。

{"asin":"xxxxxx", "title":"xxxsomething"}
{"asin":"yyyyy"}
{"asin":"zzzzzz", "title":"zzzsomething"}

为此,我编写了一个pig脚本,它利用twitter的 elephant-bird 库来加载json数据,并将其转换为一个tab分隔的文件。
但是,如果输入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';
k75qkfdt

k75qkfdt1#

您只需为此编写一个自定义项,并设置一个条件,即如果其中任何一个为空,则传递默认字符串。

相关问题