Инкрементное пакетное задание Spring XD

Я создал пакет заданий для извлечения данных из файла csv в jdbc с использованием модуля filejdbc, он работал правильно, но когда я запланировал запуск пакета каждые 5 минут, он не работал с концепцией инкрементной загрузки, он снова загружал все данные , Есть ли возможность запланировать пакет с инкрементальной загрузкой?

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

Пожалуйста, объясните, как я могу реализовать концепцию добавочной нагрузки с помощью Spring XD?

Спасибо, Моха.


person Mohammad Abu Shaera    schedule 05.07.2015    source источник
comment
Какую версию XD вы используете? Определение потока также было бы полезно.   -  person Michael Minella    schedule 05.07.2015
comment
Я использую Spring xd 1.2   -  person Mohammad Abu Shaera    schedule 05.07.2015
comment
Можете ли вы добавить свое определение потока к своему вопросу?   -  person Michael Minella    schedule 06.07.2015
comment
jdbc как источник не определен как добавочный, и ни один из его параметров не позволяет мне выполнять добавочный импорт. ПОЭТОМУ ВАРИАНТ ПОТОКА ЗДЕСЬ НЕ ДЕЙСТВУЕТ.   -  person Mohammad Abu Shaera    schedule 10.08.2015
comment
Мы по-прежнему называем определение задания определением потока. Извините за неточность, но определение вашей работы необходимо, чтобы увидеть, что не так с дополнительной нагрузкой для вашей работы.   -  person Michael Minella    schedule 11.08.2015
comment
Спасибо, Майкл. Да, вы можете планировать свою работу, используя определение потока, но это, к сожалению, снова загрузило все данные, а не просто добавило новые записи, не могли бы вы объяснить больше, если вы работали над добавочным импортом, все что мне нужно, чтобы загрузить все данные в первый раз, а затем поток должен тянуть только новые вставленные данные, а не все данные снова.   -  person Mohammad Abu Shaera    schedule 12.08.2015
comment
xd:›создание задания jdbchdfs20 --definition jdbchdfs --checkColumn=id --url=jdbc:mysql://bigdata01.intrasoft.com.jo:3306/schema2 --username=user2 --password=user2 --columns= 'id, col1, col2, col3' --tableName=schema2.xx_jdbchdfs_tbl --driverClassName=com.mysql.jdbc.Driver --deploy   -  person Mohammad Abu Shaera    schedule 12.08.2015


Ответы (1)


Я полагаю, что отсутствует концепция «состояния»… модуль filejdbc, похоже, не знает, где остановился последний импорт. Я делаю что-то подобное, но я использую пользовательское пакетное задание и использую хранилище метаданных, чтобы отслеживать, где остановилась последняя загрузка - отсюда будет взят следующий инкремент и т. д.

Поскольку вы используете модуль, поставляемый с самим spring-xd, у вас может не быть такой гибкости, но вам могут понадобиться параметры:

a- ваша целевая таблица может определять уникальные поля, которые предотвратят дублирование. Таким образом, даже если он попытается снова загрузить ВСЕ данные, будут вставлены только новые строки. Это предполагает, что модуль использует «вставить игнор» (или что-то подобное, а не просто базовую вставку (которая вызовет ошибку/исключение). Это, я должен сказать, в конечном итоге будет неоптимальным довольно быстро, довольно скоро.

б- Если это вариант, напишите модуль, который может удалить файл после его загрузки в БД. Вы можете создать сложный поток, который сначала загрузит ваши данные, а затем удалит файл.

person olumide adebayo    schedule 16.11.2016