- Dừng
PutSQLbộ xử lý và để các luồng lưu trữ xếp hàng. - Khi chúng được xếp hàng đợi, hãy nhấp chuột phải vào
successmối quan hệ
giữaUpdateAttributevàPutSQLvà chọnList Queue. - Chọn một luồng bất kỳ và điều hướng đến
Attributestab và xem các thuộc tínhabsolute.pathvàflowfilenametồn tại và nếu
chúng tồn tại, hãy xác minh xem chúng có được đặt giá trị mong đợi hay không. Trong trường hợp của bạn làabsolute.pathphải có giá trị/path/in/nifi/node/to/filevàflowfilenamephải có giá trị/data.csv
Câu hỏi dành cho bạn:Bạn có đang tự đặt các thuộc tính này bằng cách sử dụng UpdateAttribute không , lý do là, NiFi không tạo thuộc tính có tên flowfilename , nó tạo ra một với tên filename .
Một điều nữa, hãy đảm bảo giá trị cho absolute.path kết thúc bằng / cuối cùng hoặc giá trị của flowfilename bắt đầu bằng / . Nếu không, chúng sẽ được thêm vào và kết quả sẽ là /path/in/nifi/node/to/filedata.csv . Bạn có thể thử append chức năng mà @Mahendra đã đề xuất, nếu không, bạn có thể chỉ cần sử dụng ${absolute.path}/${flowfilename} .
Cập nhật
Tôi vừa nhận ra rằng absolute.path là thuộc tính cốt lõi như filename , filesize , mime.type , v.v. Một số bộ xử lý sử dụng tất cả các thuộc tính cốt lõi trong khi một số bộ xử lý sử dụng rất ít các thuộc tính cần thiết. GenerateTableFetch viết absolute.path nhưng không thiết lập bất cứ điều gì cho nó. Đó là lý do tại sao nó có ./ là giá trị mặc định.
Vì vậy, đề xuất của tôi để cách tiếp cận của bạn hoạt động là, bạn có thể đặt / ghi đè absolute.path theo cách thủ công thuộc tính sử dụng UpdateAttribute (giống như bạn đã ghi đè filename ) và đặt giá trị mong muốn là /path/in/nifi/node/to/file