我使用以下配置过滤我的csv
文件,但无法过滤。
我使用static interceptor
进行过滤,是否需要使用任何其他拦截器?请在下面的配置文件中建议我需要写的内容。
我的csv文件示例如下。
Id,Name,First,Last,Display,Job,Department,OfficeNo,OfficePh,MobilePh,Fax,Address,City,State,ZIP,Country
1,chris@contoso.com,Chris,Green,Chris Green,IT Manager,Information Technology,123451,123-555-1211,123-555-6641,9821,1 Microsoft way,Redmond,Wa,98052,United States
2,ben@contoso.com,Ben,Andrews,Ben Andrews,IT Manager,Information Technology,123452,123-555-1212,123-555-6642,9822,1 Microsoft way,Redmond,Wa,98052,United States
3,david@contoso.com,David,Longmuir,David Longmuir,IT Manager,Information Technology,123453,123-555-1213,123-555-6643,9823,1 Microsoft way,Redmond,Wa,98052,United States
4,cynthia@contoso.com,Cynthia,Carey,Cynthia Carey,IT Manager,Information Technology,123454,123-555-1214,123-555-6644,9824,1 Microsoft way,Redmond,Wa,98052,United States
我的flume-conf.properties
文件列在下面,我希望(Id=1)
之类的输出经过ch1
和(Id=2)
通过ch2
和其他{{1}通过Id(3,4)
频道。
请帮我解决。
default
静态拦截器如下
a1.sources=src1
a1.channels=ch1 ch2
a1.sinks=s1 s2
a1.sources.src1.type=exec
a1.sources.src1.command=tail -F /home/manish/TwitterExample /Import_User_Sample_en.csv
a1.channels.ch1.type=memory
a1.channels.ch1.capacity=10000
a1.channels.ch1.transactioncapacity=100
a1.channels.ch2.type = memory
a1.channels.ch2.capacity = 10000
a1.channels.ch2.transactioncapacity = 100
答案 0 :(得分:0)
至少,你使用多个拦截器的方式是错误的。必须以这种方式将拦截器添加为列表:
a1.sources.src1.interceptors = i1 i2
然后,您可以配置它们中的每一个:
a1.sources.src1.interceptors.i1.type = ...
a1.sources.src1.interceptors.i1.other = ...
...
a1.sources.src1.interceptors.i2.type = ...
a1.sources.src1.interceptors.i2.other = ...
...
据说,我认为静态拦截器不是你需要的,因为AFAIK它总是为所有事件添加相同的静态头。我的意思是,所有事件都将具有相同的标题名称和值,独立于" id"字段。
请查看How to use regex_extractor selector and multiplexing interceptor together in flume?,即改为使用Regex Extractor Interceptor。