首页 文章

使用Flume将CSV文件写入HDFS

提问于
浏览
5

我正在使用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 回答

  • 3

    您必须通过将值设置为0来禁用所有roll *属性 . 这将有效防止水槽翻转文件 . 您可能已经注意到,flume基于每个事件进行操作,在大多数情况下,事件是文件中的单行 . 要实现文件结构本身的保存,您还需要使用spool目录源并激活fileHeader:

    fileHeader  false   Whether to add a header storing the absolute path filename.
    

    将其设置为true . 它将提供%属性,您可以在hdfs接收器路径规范中引用该属性 .

相关问题