我在hive中名为customer的表details列中有以下json格式的数据:
{
"customer" : {
"given_name" : "Anuvrat",
"surname" : "Singh"
},
"order" : {
"id" : "123dfe523gd"
},
"address" : {
"city" : "kolkata",
"pin" : "700091"
},
"phone" : {
"mobile" : "*********"
}
}
我必须从json数据中删除地址和电话,数据应该如下所示:
{
"customer" : {
"given_name" : "Anuvrat",
"surname" : "Singh"
},
"order" : {
"id" : "123dfe523gd"
}
}
如何对表中的每一行执行(即更新)?
我试过以下命令 hadoop fs -cat /home/customer/* | jq '.details[] |= del(.address,.phone)'
但是我没有得到预期的结果,而是得到了错误的答案
parse error: Invalid numeric literal at line 1, column 93
cat: Unable to write to output stream.
2条答案
按热度按时间b1payxdu1#
如果你对一个不使用Hive的解决方案持开放态度,我想说的是,这是一个非常容易做到的事情
jq
命令行json解析器。给定输入文件,您将执行以下操作:
如果你想移除
address
以及phone
对象,您可以执行以下操作:ou6hu8tu2#
这是我运行以获得上述结果的查询: