json_tuple和get_json_object资源占用
时间: 2023-12-07 09:04:43 浏览: 81
对于 JSON 数据的处理,Hive 提供了两个常用的函数,即 `json_tuple` 和 `get_json_object`。这两个函数在资源占用方面有一些差异。
`json_tuple` 函数是 Hive 内置的函数,用于解析 JSON 字符串,并以元组的形式返回指定的 JSON 键值对。该函数相对较轻量,不需要额外的资源,因为它只解析一次 JSON 字符串,并返回指定的键值对。
`get_json_object` 函数也是 Hive 内置的函数,用于获取 JSON 字符串中指定键的值。与 `json_tuple` 不同,`get_json_object` 函数需要额外的资源,因为它在每次调用时都会解析 JSON 字符串。这可能会导致一些性能问题,特别是在处理大型 JSON 字符串时。
因此,在资源占用方面,`json_tuple` 函数通常比 `get_json_object` 函数更优。如果只需要获取 JSON 字符串中的几个键值对,推荐使用 `json_tuple` 函数;如果需要频繁地获取 JSON 字符串中的某些键的值,可以考虑使用 `get_json_object` 函数。
相关问题
with t1 as ( select distinct driver_id, cargo_id, recallroad from dm_algo.reflow_feed_base_data_di_v2 where day = 20230604 and json_tuple( get_json_object(poolsourceinfo, "$.HOMEPAGE_RECOMMEND"), "2" ) is not null ), t2 as ( select driver_id, cargo_id from dm_dtmart.cargo_deal_channel_listen_dispatch_specific_di where day = 20230604 and project_type in ('零担拼车', '平台普货', '特运通', '委托货') and driver_id % 10 between 0 and 4 ) select t1 join t2 on t1.driver_id=t2.driver_id and t1.cargo_id=t2.cargo_id
这是一段 SQL 查询语句,用于从两个数据表中获取特定条件下的数据。首先,使用了一个子查询 t1,从 dm_algo.reflow_feed_base_data_di_v2 表中筛选出符合以下条件的数据:日期为 20230604,且该行数据的 poolsourceinfo 字段中的第二个元素不为空。然后,使用另一个子查询 t2,从 dm_dtmart.cargo_deal_channel_listen_dispatch_specific_di 表中筛选出符合以下条件的数据:日期为 20230604,且 project_type 字段的值为 '零担拼车'、'平台普货'、'特运通' 或 '委托货',且 driver_id 取模 10 的结果在 0~4 之间。最后,将 t1 和 t2 进行内连接(join),并根据 driver_id 和 cargo_id 进行匹配。
hive get_json_object性能
根据引用\[1\]和引用\[3\]的内容,get_json_object和json_tuple在性能上基本没有差别。它们的区别在于功能不同。get_json_object用于从JSON字符串中提取指定字段的值,而json_tuple则可以提取多个字段并返回一个元组。根据引用\[3\]的描述,使用lateral view和json_tuple可能会对性能产生较大的损耗,除非需要进行嵌套多字段解析和炸裂操作,否则不建议使用。因此,对于性能要求较高的场景,可以选择使用get_json_object来提取JSON字段的值。
#### 引用[.reference_title]
- *1* *3* [Day2、Hive json_tuple性能比get_json_object更高吗?为什么?](https://blog.csdn.net/qq_35590459/article/details/127309760)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [hive get_json_object json_tuple json解析详解](https://blog.csdn.net/bitcarmanlee/article/details/114307368)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文