- Zatrzymaj
PutSQL
procesor i pozwól plikom przepływowym ustawić się w kolejce. - Gdy ustawią się w kolejce, kliknij prawym przyciskiem myszy
success
związek
pomiędzyUpdateAttribute
iPutSQL
i wybierzList Queue
. - Wybierz dowolny plik przepływu i przejdź do
Attributes
tab i sprawdź, czy atrybutyabsolute.path
iflowfilename
istnieje, a jeśli
istnieją, sprawdź, czy mają ustawioną oczekiwaną wartość. W Twoim przypadkuabsolute.path
powinien mieć wartość/path/in/nifi/node/to/file
iflowfilename
powinien mieć wartość/data.csv
Pytanie do Ciebie:czy sam ustawiasz te atrybuty za pomocą UpdateAttribute
, powód jest taki, że NiFi nie generuje atrybutu o nazwie flowfilename
, generuje plik o nazwie filename
.
Jeszcze jedno, upewnij się, że wartość dla absolute.path
kończy się /
na końcu lub wartość flowfilename
zaczyna się od /
. Jeśli nie, zostaną dołączone, a wynikiem będzie /path/in/nifi/node/to/filedata.csv
. Możesz spróbować append
funkcja sugerowana przez @Mahendra, w przeciwnym razie możesz po prostu użyć ${absolute.path}/${flowfilename}
.
Aktualizacja
Właśnie zdałem sobie sprawę, że absolute.path
jest podstawowym atrybutem, takim jak filename
, filesize
, mime.type
itd. Niektóre procesory używają wszystkich podstawowych atrybutów, podczas gdy niektóre używają bardzo niewielu z nich. GenerateTableFetch
zapisuje absolute.path
ale nic na to nie ustawia. Dlatego ma ./
która jest wartością domyślną.
Więc moja sugestia dla twojego podejścia do pracy jest taka, że możesz ręcznie ustawić/nadpisać absolute.path
atrybut przy użyciu UpdateAttribute
(tak jak nadpisałeś filename
) i ustaw żądaną wartość, którą jest /path/in/nifi/node/to/file