- Zatrzymaj
PutSQLprocesor i pozwól plikom przepływowym ustawić się w kolejce. - Gdy ustawią się w kolejce, kliknij prawym przyciskiem myszy
successzwiązek
pomiędzyUpdateAttributeiPutSQLi wybierzList Queue. - Wybierz dowolny plik przepływu i przejdź do
Attributestab i sprawdź, czy atrybutyabsolute.pathiflowfilenameistnieje, a jeśli
istnieją, sprawdź, czy mają ustawioną oczekiwaną wartość. W Twoim przypadkuabsolute.pathpowinien mieć wartość/path/in/nifi/node/to/fileiflowfilenamepowinien 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