我正在使用Flume从我的本地文件系统向HDFS写入许多CSV文件 .
我想知道什么是Flume HDFS接收器的最佳配置,这样本地系统上的每个文件都将完全以HDFS格式复制为CSV . 我希望Flume处理的每个CSV文件都是单个事件,刷新并写为单个文件 . 尽可能地,我希望文件完全相同,没有 Headers 内容等 .
我需要将这些值放在哪里来模拟我想要的行为?
hdfs.batchSize = x
hdfs.rollSize = x
hdfs.rollInterval = x
hdfs.rollCount = x
请提供是否还有其他Flume代理配置变量我也需要更改 .
如果使用现有配置无效,我是否需要使用自定义接收器才能达到我想要的效果?
感谢您的输入 .
附:我知道hadoop fs -put或-copyFromLocal更适合这项工作,但由于这是一个概念证明(表明我们可以使用Flume进行数据摄取),这就是我需要使用Flume的原因 .
1 回答
您必须通过将值设置为0来禁用所有roll *属性 . 这将有效防止水槽翻转文件 . 您可能已经注意到,flume基于每个事件进行操作,在大多数情况下,事件是文件中的单行 . 要实现文件结构本身的保存,您还需要使用spool目录源并激活fileHeader:
将其设置为true . 它将提供%属性,您可以在hdfs接收器路径规范中引用该属性 .