我对flume(和hdfs)是新手,所以我希望我的问题不是愚蠢的。
我有一个多租户应用程序(目前大约有100个不同的客户)。我有16种不同的数据类型。
(在生产中,我们通过rabbitmq每天大约有1500万条消息)
我想将所有事件写入hdfs,按租户、数据类型和日期分隔,如下所示:
/data/{tenant}/{data_type}/2014/10/15/file-08.csv
一个Flume的定义可以吗?我不想重复配置,新的客户端每周都会到达
在文档中,我明白了
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/
我想根据传入的数据写入不同的文件夹。
2条答案
按热度按时间bqjvbblv1#
可能的解决方案是编写一个传递租户值的拦截器。
请参考下面的链接
http://hadoopi.wordpress.com/2014/06/11/flume-getting-started-with-interceptors/
q1qsirdb2#
是的,这确实是可能的。您可以使用元数据或传入数据中的某个字段将输出重定向到。
例如,在我的例子中,我得到了不同类型的日志数据,我想相应地将其存储在相应的文件夹中。在我的例子中,日志行中的第一个单词是文件名。下面是相同的配置代码段。
拦截器:
hdfs接收器
希望这有帮助。