Spooling Directory Source使用技巧

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$







posted @ 2015-06-08 14:42  lishouguang  阅读(1167)  评论(0编辑  收藏  举报