我正在使用flume将本地文件系统中的许多csv文件写入hdfs。
我想知道什么是flume hdfs sink的最佳配置,这样本地系统上的每个文件都将在hdfs中作为csv准确复制。我希望flume处理的每个csv文件都是单个事件,作为单个文件刷新和写入。尽可能地,我希望文件是完全一样的,没有头的东西等。
我需要在这些值上添加什么来模拟我想要的行为?
hdfs.batchSize = x
hdfs.rollSize = x
hdfs.rollInterval = x
hdfs.rollCount = x
请提供如果有其他flume代理配置变量,我也需要更改。
如果使用现有配置无法实现这一点,我是否需要使用自定义接收器来实现我想要的?
谢谢你的意见。
p、 我知道hadoop fs-put或-copyfromlocal更适合这个工作,但是因为这是一个概念证明(表明我们可以使用flume进行数据接收),所以我需要使用flume。
1条答案
按热度按时间z4iuyo4d1#
必须通过将值设置为0来禁用所有roll*属性。这将有效地防止flume翻滚文件。正如您可能已经注意到的,flume以每个事件为基础进行操作,在大多数情况下,事件是文件中的一行。为了保存文件结构本身,您需要使用spool dir源并激活fileheader:
设置为真。它将提供一个%{file}属性,您可以在hdfs接收器路径规范中引用该属性。