Анализ Hive json элементов из длинной строки concat json - PullRequest
0 голосов
/ 17 июня 2020

У меня есть журнал сервера, он непрерывно записывает json значений без разделителей, например:

{"a":1}{"b",2}{"a":2}{"c":{\"qwe\":\"asd\"},"d":"ert"}{"e":12}....

Я хочу извлечь каждый элемент и поместить их в строки, например :

{"a":1}
{"b",2}
{"a":2}
{"c":{\"qwe\":\"asd\"},"d":"ert"}
{"e":12}..

В журнале отсутствует разделитель и он содержит вложенные json, поэтому я не могу использовать функцию split ... Как этого добиться ...

1 Ответ

2 голосов
/ 17 июня 2020

Один из вариантов - использовать split для символа }{ и получить элементы, используя posexplode. Позиции нужны только для правильного объединения первого и последнего элементов.

select case when pos = 0 then concat(split_str,'}') 
            when pos = max(pos) over(partition by str) then concat('{',split_str) 
       else concat('{',split_str,'}') end as res
from tbl 
lateral view posexplode(split(str,'\\}\\{')) t as pos,split_str

Обратите внимание, что результат будет string.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...