2017-01-19 10 views
0

Скажем, работа sqoop записывает инкрементный импорт в каталог hdfs. Другое (не-sqoop) задание периодически перемещает данные из этого каталога в другое место для обработки. Я бы хотел, чтобы эта работа не перемещала файлы, которые сейчас модифицируются sqoop. Есть ли способ иметь готовые файлы, переименованные в определенный шаблон, когда они хороши для перемещения?Есть ли способ увидеть, что sqoop закончил запись в файл?

Если файлы не перемещены, sqoop просто добавляет новый контент в существующие файлы part-m-000x каждый раз?

ответ

0

Посмотрите, как работает процесс загрузки Ambari/HDFS. Когда вы загружаете файл в hdfs, во время загрузки файла «xxxx.txt» Ambari загружает его как «xxxx.txt._COPYING». Когда загрузка завершена, он просто переименовывает файл в нужное имя.

Если ваш другой процесс sqoop ищет файлы «.txt», он не увидит его, прежде чем он будет переименован и, следовательно, будет завершен и готов к перемещению.

Выполнено в прошлом и отлично работает.

+0

Да, это именно то, что я хочу. Я спрашиваю, есть ли способ заставить sqoop работать одинаково (или если он работает по умолчанию)? – Art

+0

По умолчанию этот режим не работает. Вы должны были бы написать его. Вы можете просто обернуть утилиту sqoop скриптом, который это сделает. –

0

Sqoop использует MapReduce под капотом и рабочие мест M/R магазина по умолчанию результатов в _temporary поддиректории в процессе выполнения:

Task Side-Effect Files

(...), когда OutputCommitter является FileOutputCommitter, поддерживает специальный подкаталог ${mapreduce.output.fileoutputformat.outputdir}/_temporary/_${taskid}, доступный через ${mapreduce.task.output.dir} для каждой попытки задачи в FileSystem, где хранится результат попытки задачи. При успешном завершении попытки задачи файлы в ${mapreduce.output.fileoutputformat.outputdir}/_temporary/_${taskid} (только) рекламируются до ${mapreduce.output.fileoutputformat.outputdir}. Конечно, структура отбрасывает подкаталог неудачных попыток. Этот процесс полностью прозрачен для приложения.

Я только что выполнил импорт Sqoop, чтобы проверить эту информацию, и Sqoop действительно работает таким образом.

 Смежные вопросы

  • Нет связанных вопросов^_^