为什么在spark和sql工具中运行“get\u json\u object”时返回不同的结果

ergxz8rk  于 2021-06-24  发布在  Hive
关注(0)|答案(1)|浏览(407)

我已经开发了一个hive查询,它使用横向视图并获取json对象来解压一些json。使用jdbc客户机(dbvisualizer)对配置单元数据库执行查询已经足够好了,但是当从java应用程序以sparksql的形式运行时,在相同的数据上,它不会返回任何结果。我已经找到了问题的根源,即“get\u json\u object”函数返回的内容存在差异。
这种类型的查询可以说明这个问题

select concat_ws( "|", get_json_object('{"product_offer":[
{"productName":"Plan A"},
{"productName":"Plan B"}]}', 
'$.product_offer.productName') )

当在dbvisualizer中针对一个配置单元数据库运行时,我在json数组中得到一个包含两个产品名的数组:[“plana”,“planb”]。当从java应用程序中以sparksql运行同一查询时,返回null。
我注意到另一个区别:路径“$.product\u offer[0].productname”在db visualizer中返回“plan a”,而在spark中没有返回任何内容。

jyztefdp

jyztefdp1#

提取产品名称数组的路径是

select concat_ws( "|", get_json_object('{"product_offer":[{"productName":"Plan A"},{"productName":"Plan B"}]}', '$.product_offer[*].productName'

在spark dbvisualizer中都可以使用。

相关问题