Я анализирую данные из API, который возвращает данные о продуктах в формате JSON. У меня есть таблица Hive json_message_table
, где у меня есть каждое сообщение JSON в строке таблицы. Я хочу заполнить таблицы Hive этой информацией, и мне нужно разбить структуру JSON.
Структура выглядит следующим образом.
{product_name : ... , meta : { product_structure : { sub_product_1 : {...},sub_product_2 : { ... } ... }}
То, что я делал раньше в подобных случаях is
SELECT b1.product_name as ProductName,
b3.product_structure as ProductStructure
FROM json_message_table a
LATERAL VIEW json_tuple(a.messages,'product_name') b1 as product_name
LATERAL VIEW json_tuple(a.messages,'meta') b2 as meta
LATERAL VIEW json_tuple(b2.meta,'product_structure') b3 as product_structure;
Моя проблема в том, что имена ключей sub_product_1,sub_product_2
различны для каждого объекта JSON, они могут называться как угодно, поэтому я не могу указать, как они будут вызываться, и поэтому я не понимаю, как использовать LATERAL VIEW
и json_tuple
для их анализа.
Мне нужно разобрать каждое поле внутри product_structure JSON независимо от имени ключа, а затем продолжить анализ метаданных внутри их соответствующих JSON. Есть ли способ сделать это?