Разбейте свои строки, используя split()
, взорвитесь, используя posexplode()
, и используйте вид сбоку.Разделение на пустую строку ''
сгенерирует массивы с дополнительными пустыми элементами, отфильтрует их, соединит элементы и числа по их позициям в массиве.
Демонстрация (замените подзапрос s вашей таблицей):
select i.itm as item, n.nbr as number
from
(--replace this subquery with your table
--this is two rows example
select stack(2,'ABC', '123',
'DEF', '456') as (item, number)
) s --your_table
lateral view posexplode(split(s.item,'')) i as pos, itm
lateral view posexplode(split(s.number,'')) n as pos, nbr
where i.itm!='' and n.nbr!='' and i.pos=n.pos ;
Результат:
OK
item number
A 1
B 2
C 3
D 4
E 5
F 6
Time taken: 0.094 seconds, Fetched: 6 row(s)
hive>