2016-06-02 11 views
0

У меня есть набор данных, на которых я запускал многоуровневую команду по типу столбца, и теперь у меня есть эти пути в hdfs: «/output/type1/ " "/выход/type2/", "/выход/type3/" и т.д.Свинцовый вывод Multistorage, который должен быть добавлен, когда я запускаю его каждый день

Теперь Каждый день я запустить сценарий с multistorage команды на столбце 'тип', чтобы произвести" /TMP/тип1/ "," /tmp/type2/ "," /tmp/type3/ "и т. д. (Типы здесь могут быть либо <, либо = типы в основном выпуске, которые уже присутствуют).

Поскольку Pig не позволяет мне предоставлять выходной путь уже существующего каталога, мой сценарий, который работает каждый день, это/tmp /. Есть ли способ объединить/tmp/with/output/под поддиректориями типа 'type'?

Ожидается наличие/tmp/type1/file под/выходом/type1/as/output/type1/file и т. Д. Этот способ я могу удалить/tmp и запустить сценарий еще раз.

Любая помощь приветствуется. Спасибо заранее.

+0

Как вы знаете, какой каталог типа вы хотите сохранить? – 54l3d

+0

Типовые каталоги создаются динамически, используя многопользовательскую команду в столбце «тип» – dreddy

ответ

0

Свинья не может обрабатывать каталоги, но вызывает fs commands. Сопоставление временных каталогов с конечными каталогами требует больше, чем может сделать Pig. Вы можете использовать FileSystem Api в крошечной java-программе и выполнять ее отдельно или в рабочем процессе Oozie.

В дополнение к этому вы должны убедиться, что Прилагаемые файлы имеют разные имена файлов, чем несуществующие них, это не поведение по умолчанию, и вы можете достичь его с помощью этой команды:

%declare timestamp `date +"%s"` 
SET mapreduce.output.basename '$timestamp' 
/* here we used the timestamp to get unicity*/ 
+0

Я использовал guid, который работает аналогичным образом :) – dreddy