在hdfs上编写csv文件但在写入hdfs之前如何使用flume静态拦截器过滤csv文件

时间:2015-09-11 07:10:26

标签: csv flume

我使用以下配置过滤我的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

1 个答案:

答案 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