Я использую Nifi для загрузки еженедельного CSV для клиента. Nifi помещает CSV в каталог HDFS, после чего внешняя таблица Hive загружает данные. Каждую неделю новый файл попадает в каталог, и данные добавляются в таблицу Hive.
Однако у них нет возможности сообщить новые данные из старых данных, поэтому было предложено добавить метку даты в новые строки. Создание столбца «дата» в Hive не проблема, но мне интересно, как заполнить этот столбец датами. Я думал о добавлении процессора PutHQL после процессора PutHDFS, чтобы он мог выполнить оператор вроде
insert into my_table(date) ${now():format('YYYY-MM-dd')}
Но здесь есть некоторые проблемы:
- может ли Nifi игнорировать предыдущие записи и вставлять только в новые строки?
- как Nifi узнает, во сколько строк ввести метку даты?
- Я даже не уверен, что приведенная выше команда Hive будет работать так, как нужно Я думаю, что это будет
Другая проблема заключается в том, что оригинальный CSV должен быть оставлен без изменений. Часть проблемы в том, что я не уверен, как Nifi взаимодействует с CSV-файлами. Если у него есть способ читать столбцы и строки как атрибуты, то, возможно, возможно добавить значения меток даты, прежде чем он достигнет Hive (может быть?).
Я также слышал, что Hive может сделать это вроде бы напрямую, но у меня нет никаких деталей. Любые предложения приветствуются.