Я пытаюсь создать поток в Apache-Nifi для сбора файлов из стороннего RESTful APi, и я установил свой поток следующим образом:
InvokeHTTP - ExtractText - PutFile
Я могу собрать файл, который мне нужен, поскольку я указал это в своем удаленном URL-адресе, однако, когда я получаю все данные из указанного файла, он выводит несколько (сотни) одних и тех же файлов в мой выходной каталог.
3 вещи, с которыми мне нужна помощь:
1: Как заставить поток выводить файл в удобочитаемом формате .csv, а не просто файл без расширения
2: Как я могу остановить процессор, когда у меня есть все данные, которые мне нужны
3: Файл Json, который мне предоставили, дает мне возможность получать файлы из определенного диапазона дат:
https://api.3rdParty.com/reports/v1/scheduledReports/877800/1553731200000
Или я могу выбрать конкретный файл:
https://api.3rdParty.com/reports/v1/scheduledReports/download/877800/201904/CTDDaily/2019-04-02T01:50:00Z.csv
Но как я могу создать команду в Nifi для автоматической проверки новых файлов, так как этот процесс будет выполняться ежедневно, и мы будем каждый день загружать новый файл.
Если это слишком широко, пожалуйста, помогите мне, дав мне знать, чтобы я мог отредактировать этот пост.
Спасибо.
Примечание. Имя стороннего хоста было переименовано в целях безопасности, поэтому прямые ссылки работать не будут. Спасибо.
Ссылки не будут работать, так как я заменил детали третьей стороны на «3rdParty».
1) Вы меняете имя файла потока на все, что хотите, используя процессор UpdateAttribute. Если вы хотите, чтобы он имел расширение «.csv», вы можете добавить свойство с именем «имя файла» со значением «${имя файла}.csv» (без кавычек при вводе).
2) По умолчанию большинство процессоров имеют стратегию планирования драйвера таймера 0 секунд, что означает, что они должны работать как можно быстрее. Перейдите к конфигурации процессора на вкладке планирования и настройте соответствующее расписание. Похоже, вы, вероятно, хотите, чтобы расписание CRON планировалось ежедневно.
3) Вы можете использовать операторы языка выражений NiFi для создания динамических диапазонов времени. Я не совсем понимаю синтаксис API, с которым вам нужно общаться, но вы можете сделать что-то вроде этого для URL-адреса:
https://api.3rdParty.com/reports/v1/scheduledReports/877800/${сейчас()}
Где now() возвращает текущую временную метку в виде эпохи.
Вы также можете отформатировать его в строку даты, если это необходимо:
${сейчас():формат('гггг-ММ-дд')}
https://nifi.apache.org/docs/nifi-docs/html/expression-language-guide.html
Большое спасибо - посмотрю на эти биты, как вы указали выше!
Ваши ссылки не работают.