Попробуйте с запросом ниже:
hive> with cte as (
select stack(2,int(21),string('{"temp":"3","list":[{"url":"aaa.com"},{"url":"bbb.com"}]}'),
int(42),string('{"temp":"2","list":[{"url":"qqq.com"},{"url":"vvv.com"}]}')) as (id,json))
select id,url from (
select id,
split(
regexp_replace(
get_json_object(json,'$.list.url'),
'(\\[|\\]|\")','')
,',')jsn from cte)t
lateral view explode(jsn)asd as url;
Выход:
id url
21 aaa.com
21 bbb.com
42 qqq.com
42 vvv.com
Описание функций:
Stack
- используется для создания выборочных данных
get_json_object
- для извлечения данных из строки json
regexp_replace
- заменить [,],"
символов
split
- разделить на ,
, и это вернет массив
explode
- использовать столбец массива для взрыва