标签:
1、使用文件原来的名字
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | a1.sources=r1 a1.sinks=k1 a1.sources.r1.type=spooldir .... a1.sources.r1.basenameHeader=true a1.sources.r1.basenameHeaderKey=basename ..... a1.sinks.k1.type=hdfs a1.sinks.k1.hdfs.path=hdfs://xxx:8020?/a/b/%{basename} |
在source里设置basnameHeader为true,这样在解析出来的event在header上将添加一个属性,名字是basenameHeaderKey定义,值是文件原来的名字。
2、将整个文件作为一个event
在默认情况下,deserializer是LINE,它的效果是,将文件里的每一行解析成一个event。改成BlobDeserializer,则将整个文件解析成一个event。不过,这种方式对大文件不适合,因为整个文件将放入内存中。
1 2 3 4 5 | a1.sources=r1 ... a1.sources.r1.type=spooldir a1.sources.r1.deserializer=BlobDeserializer ... |
3、在传输新文件到监控的文件夹时,需要让Spooing Directory Source忽略这个正在传输的文件,等传输完毕后在触发。
可以使用ignorePattern属性来避免。
1 | a1.sources.r1.ignorePattern=^(.)*\\.tmp$ |
标签:
原文地址:http://www.cnblogs.com/lishouguang/p/4560892.html