场景
来自窗口的名为test_CSV.CSV的CSV数据。将CSV数据引入hdfs。节拍>(ListenBeats(NiFi(PutHDFS(>;HDFS-
数据示例:
a,b,c,d,e
a1,b1,c1,d1,e1
a2,b2,c2,d2,e2
a3,b3,c3,d3,e3
a4,b4,c4,d4,e4
a5,b5,c5,d5,e5
a6,b6,c6,d6,e6
a7,b7,c7,d7,e7
a8,b8,c8,d8,e8
根据Nifi Flow UI,它运行良好,并成功写入hdfs问题是
hadoop@ambari:~$ hdfs dfs -ls /user/nifi/test
Found 9 items
-rw-r--r-- 3 nifi hdfs 480 2020-07-06 14:30 /user/nifi/test/0192a8bb-67ec-462e-a602-62a5425afc99
-rw-r--r-- 3 nifi hdfs 480 2020-07-06 14:30 /user/nifi/test/0211ec05-fc62-4b82-87e5-a2e20a9fb07e
-rw-r--r-- 3 nifi hdfs 481 2020-07-06 14:30 /user/nifi/test/1e227df9-f49f-46d6-a309-25e466fa14cf
-rw-r--r-- 3 nifi hdfs 480 2020-07-06 14:30 /user/nifi/test/324a0c0e-e190-4239-b594-edbf9fcab0d6
-rw-r--r-- 3 nifi hdfs 474 2020-07-06 14:30 /user/nifi/test/3d34827b-6bae-4c21-981e-9722b7a6703e
-rw-r--r-- 3 nifi hdfs 481 2020-07-06 14:30 /user/nifi/test/6873c51b-a93b-4872-b33c-0e59b85afcd5
-rw-r--r-- 3 nifi hdfs 480 2020-07-06 14:30 /user/nifi/test/98606d6b-2206-4b2e-8204-8363a87f41d0
-rw-r--r-- 3 nifi hdfs 480 2020-07-06 14:30 /user/nifi/test/f25e56b5-88d7-4135-b475-213e4e54b47f
-rw-r--r-- 3 nifi hdfs 480 2020-07-06 14:30 /user/nifi/test/f354f587-8da2-418f-be0d-34e8a79d7d39
我已尝试将PutHDFS目录更改为/user/nifi/test.csv它返回
hadoop@ambari:~$ hdfs dfs -cat /user/nifi/test.csv
cat: `/user/nifi/test.csv': Is a directory
hadoop@ambari:~$ hdfs dfs -ls /user/nifi/test.csv
Found 9 items
-rw-r--r-- 3 nifi hdfs 480 2020-07-06 14:35 /user/nifi/test.csv/02cdc89d-3cb9-494a-b7f5-d280d7b7c65e
-rw-r--r-- 3 nifi hdfs 480 2020-07-06 14:35 /user/nifi/test.csv/2476906a-00d9-463a-89ef-ea885f823faa
-rw-r--r-- 3 nifi hdfs 474 2020-07-06 14:35 /user/nifi/test.csv/5b9a9d7e-0c2f-428c-8af4-e875c6db1a04
-rw-r--r-- 3 nifi hdfs 480 2020-07-06 14:35 /user/nifi/test.csv/66017da5-b55f-437b-a3cf-0a6b45d86ce8
-rw-r--r-- 3 nifi hdfs 480 2020-07-06 14:35 /user/nifi/test.csv/7be93660-75a1-416b-b019-656d466813d6
-rw-r--r-- 3 nifi hdfs 480 2020-07-06 14:35 /user/nifi/test.csv/98877296-126c-4ac9-9da5-cef62937e9f9
-rw-r--r-- 3 nifi hdfs 481 2020-07-06 14:35 /user/nifi/test.csv/ac075d33-1137-4aea-9e5b-fc11097558eb
-rw-r--r-- 3 nifi hdfs 480 2020-07-06 14:35 /user/nifi/test.csv/b9b44c08-1bc6-4e33-947b-daf265491181
-rw-r--r-- 3 nifi hdfs 481 2020-07-06 14:35 /user/nifi/test.csv/ba6464db-ef64-4993-a070-80f1392eac1e
是否可以让nifi在一个目录文件中写入hdfs?我预计它将在hdfs中创建test.csv文件
谢谢
NiFi中的每个流文件都有一个名为";文件名";这就是PutHDFS在HDFS中用作文件名的地方。";目录";PutHDFS中的属性仅用于目录,因此您希望只放入"/用户/nifi";。
为了更改文件名,您需要在PutHDFS之前放置一个UpdateAttribute处理器,并将filename设置为whatever-you-want.csv
如果将其设置为静态值,则每次写入时都会有一个现有文件并发生冲突,要么替换,要么抛出错误。因此,您可能希望首先使用MergeContent/MergeRecord处理器将许多小的CSV条目批处理到一个较大的流文件中,然后创建一个动态文件名,如:
filename=测试-${now((}.csv
您可以使用不同的表达式,但只能使用一些唯一的表达式,如时间戳、日期字符串或UUID。