У меня большой набор данных с полями id
и details
.details
- это либо карта, либо мешок карт.Моя конечная цель - запись id, key, value
для каждой записи во всех картах данных.
В 0.16
я мог бы свободно использовать FLATTEN
, чтобы убедиться, что у меня только одна карта на строку, а затем использоватьUDF, чтобы сгладить карты.Но поскольку 0.17
, FLATTEN
работает и на картах.Это приводит к ситуации, когда после одного использования у меня есть некоторые данные точно так, как я хочу, но остальные данные все еще находятся на карте.
По сути, мне нужно один раз использовать FLATTEN
для половины данных и дважды для другой половины.Есть ли способ определить тип данных в операторе GENERATE
, чтобы сгладить данные только в том случае, если это карта?
В качестве иллюстрации приведено
(ID1, [key1#val1,key2#val2])
(ID2, {[key3#val3, key4#val4]})
Я хочу создать
(ID1, key1, val1)
(ID1, key2, val2)
(ID2, key3, val3)
(ID2, key4, val4)