Я застрял в этом вопросе на некоторое время.У меня есть файл данных, который выглядит следующим образом:
2012/01/01 Name1 "Category1,Category2,Category3"
2012/01/01 Name2 "Category2,Category3"
2012/01/01 Name3 "Category1,Category5"
Каждый элемент связан с разделенным запятыми списком категорий.Я хотел бы иметь возможность группировать по названию категории, чтобы получить вывод, подобный этому:
Category1 Name1, Name3
Category2 Name1, Name2
...
Category5 Name3
(более конкретно, мне не нужны имена предметов - только подсчет количества предметовв этой категории будет)
В итоге я написал UDF, чтобы взять разделенное запятыми поле категории и преобразовать его в пакет "Свинья".Моя схема данных теперь выглядит примерно так: {date: chararray, name: chararray, categories: {t: (category:chararray)}}
Я застрял на следующем шаге - фактически выполняю группирование по значению вложенной сумки.Я попробовал варианты вложенного оператора FOREACH без какой-либо удачи.Например:
x = FOREACH myData
{
categoryNames = FOREACH categories GENERATE category;
GENERATE myData.Name, categoryNames;
}
Я думал, что этот вид синтаксиса может генерировать кортежи (имя, категория), которые я могу запустить GROUP.Однако, фактический результат - целая сумка, возвращающая меня на круги своя. У меня нет идей о том, как поступить - помощь / обратная связь была бы очень признательна.Спасибо!