HDFS 接收器:"clever"文件夹路由



我是Flume(和HDFS)的新手,所以我希望我的问题不是愚蠢的。

我有一个多租户应用程序(大约有100个不同的客户现在)。我有16种不同的数据类型。

(在生产过程中,我们每天通过RabbitMQ)

我想把我所有的事件都写入HDFS,按租户、数据类型、,和日期,如下所示:

/data/{tenant}/{data_type}/2014/10/15/file-08.csv

有可能使用一个水槽定义吗?我不想复制配置,新客户端每周左右到达

在文档中,我看到

agent1.sinks.hdfs-sink1.hdfs.path = hdfs://server/events/%Y/%m/%d/%H/

这可能吗?

agent1.sinks.hdfs-sink1.hdfs.path = hdfs://server/events/%tenant/%type/%Y/%m/%d/%H/

我想根据传入的数据写入不同的文件夹。

是的,这确实是可能的。您可以使用元数据或传入数据中的某个字段将输出重定向到.

例如,在我的案例中,我得到了不同类型的日志数据,我想相应地将其存储在相应的文件夹中。在我的情况下,日志行中的第一个单词是文件名。以下是相同的配置片段。

拦截器:

dataplatform.sources.source1.interceptors = i3
dataplatform.sources.source1.interceptors.i3.type = regex_extractor
dataplatform.sources.source1.interceptors.i3.regex = ^(\w*)t.*
dataplatform.sources.source1.interceptors.i3.serializers = s1
dataplatform.sources.source1.interceptors.i3.serializers.s1.name = filename

HDFS接收器

dataplatform.sinks.sink1.type = hdfs
dataplatform.sinks.sink1.hdfs.path = hdfs://server/events/provider=%{filename}/years=%Y/months=%Y%m/days=%Y%m%d/hours=%H

希望这能有所帮助。

可能的解决方案是编写一个传递租户值的拦截器。

请参阅下面的链接

http://hadoopi.wordpress.com/2014/06/11/flume-getting-started-with-interceptors/

最新更新