2016-11-08 6 views
2

У меня есть список файлов для копирования в HDFS.My Regex для атрибута фильтра файлов в NiFi GetFile процессор не работает

имена файлов, как:

  1. Sample-11072016
  2. Sample-11082016
  3. Sample-11062016
  4. Sample-11062016
  5. Denodo-09082016
  6. Denodo-09122016
  7. Denodo-11082016
  8. Denodo-11072016

Сейчас я пытаюсь написать регулярное выражение, которое будет выбрать сегодняшний Sample файла. Цифры следующих файлы финики как в

Sample-11082016 является файлом даты 11/08/2016

Регулярного выражения, я попытался это [Sample]-(0-9){8} Это регулярное выражение будет возвращать все файлы примеров с из всех дат, поскольку я проверяю 8 цифр. Не могли бы вы предложить, как найти файл с сегодняшней датой. Проблема здесь Имя файла Образец остается постоянным, когда дата меняется. Мне нужно написать регулярное выражение, чтобы он мог выбрать только файл сегодняшней даты.

Я довольно новичок в Regex, можно ли написать регулярное выражение, чтобы проверить, соответствует ли дата сегодняшней дате.

Любые предложения помогут. Правила регулярного выражения NIFI аналогичны правилам Java Regex. регулярное выражение Выражение должно быть использовано против File Filter атрибута из GetFile процессора

Привет,

Sai_PB.

ответ

3

Вы почти находитесь в регулярном выражении. Поместив «Sample» между квадратными скобками ('[' и ']'), вы говорите: «Первый символ должен соответствовать одному из этих символов». Вот link, который объясняет это немного более подробно (см. Раздел «Классы символов»).

Также, поставив «0-9» в скобках, вы говорите: «Захватите эту группу, которая соответствует буквам« 0-9 »точно». Здесь вы хотите квадратные скобки.

Поэтому регулярное выражение, которое вы должны использовать, это «Sample- [0-9] {8}» (вы можете использовать «\ d» вместо «0-9», но я хотел сохранить как можно больше вашего исходного регулярного выражения насколько это возможно).

Вы можете проверить свое регулярное выражение так, как показано на рисунке website.

Чтобы решить вторую проблему при сборе файла журнала текущего дня, вы должны использовать указанное выше регулярное выражение в качестве фильтра файлов. Затем настройте «Стратегию планирования» для запуска один раз в день (после того, как файл будет написан для дня).Наконец, установите «Максимальный возраст файла» равным «24h» (при необходимости отрегулируйте, чтобы убедиться, что действителен только последний). Эти конфигурации заставят процессор работать один раз в день, подбирая только файл, соответствующий соответствующему фильтру, и не старше одного дня.

+0

Ну, Regex '[Sample] - (0-9) {8}' будет выбирать все образцы независимо от дат, но мое требование - выбирать файлы только текущего дня. Для этого я могу написать '[Sample] - [Today's date]'. В этом случае мне нужно менять регулярное выражение каждый день, вместо этого я пытаюсь найти способ автоматизировать это, например, сценарий должен автоматически выбирать файлы без меня, изменяя регулярное выражение каждый день. –

+0

Ах, простите, я полностью пропустил эту часть вашего вопроса. Пара последующих вопросов: хотите ли вы непрерывно передавать файлы по мере их создания или раз в день выбирать их все? после того, как вы принесете их в NiFi, они могут быть удалены (свойство GetFile: сохранить исходный файл)? – JDP10101

+0

И вы не пытаетесь «загнать» скользящий файл, как пишет другая система? (вы хотите получить файл после того, как что-то записано на диск один раз) – JDP10101

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

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