解析HDFS中的Json文件,并仅在密钥可用时写入输出

holgip5t  于 2022-12-09  发布在  HDFS
关注(0)|答案(1)|浏览(165)

我有一个JSON文件,“name”作为键,“url”作为另一个键。不是JSON中的所有记录都有“url”键。所以当我试图写入文本时,它被写为空。所以,我必须检查url键是否存在,如果存在,那么它必须被写入2个输出文本文件。name将后藤name.txt,url将转到url.txt

{ [ {"name": "a", url: "url1"}, {"name": "b"}, {"name": "C"} ] }

预期输出:

name.txt
a
url.txt
url

目前为止,我尝试的是:

name=`hdfs dfs -cat $path | jq -r '.name'`
url=`hdfs dfs -cat $path | jq -r '.name'`

echo ${name} >> name.txt
echo ${url} >> url.txt

上面的问题是,如果找不到url,它会将空值写入输出文件,并将等效名称写入name.txt文件。
如何在找不到url json标记时跳过记录不写入输出文件

8wigbo56

8wigbo561#

显然你需要先到select(.url)
同时调用hdfs和jq两次似乎有点奢侈,如果考虑到效率,您可能希望将hdfs的结果保存到一个文件中,然后调用jq两次,或者更好的办法是在一个管道中只调用hdfs和jq一次,然后调用awk来写入这两个文件。

相关问题