У меня есть два файла,PIG разбора строки входы
один является titles.csv и имеют идентификатор фильма и название с этим форматом:
999: Title
734: Another_title
другой представляет собой список идентификаторов пользователей, которые ссылаются на фильм
CategoryId: user1_id, ....
222: 120
227: 414 551
249: 555
различных размеров (минимум один пользователь в жанре Categor y)
Цель состоит в первом разобрать строки так, чтобы каждый из них разбился на два (для обоих файлов), все до «:» и все после.
Я попытался сделать это
movies = LOAD .... USING PigStorage('\n') AS (line: chararray)
users = LOAD .... USING PigStorage('\n') AS (line: chararray)
-- parse 'users'/outlinks, make a list and count fields
tokenized = FOREACH users GENERATE FLATTEN(TOKENIZE(line, ':')) AS parameter;
filtered = FILTER tokenized BY INDEXOF(parameter, ' ') != -1;
result = FOREACH filtered GENERATE SUBSTRING(parameter, 2, (int)SIZE(parameter)) AS number;
Но это где я застрял/запутаться. Мысли?
Я также должен вывести первые 10 записей, у которых есть большинство идентификаторов пользователя во второй части строки.