使用Flume将CSV文件写入HDFS

men*_*h84 5 hdfs flume

我正在使用Flume从我的本地文件系统向HDFS写入许多CSV文件.

我想知道什么是Flume HDFS接收器的最佳配置,这样本地系统上的每个文件都将完全以HDFS格式复制为CSV.我希望Flume处理的每个CSV文件都是单个事件,刷新并写为单个文件.尽可能地,我希望文件完全相同,没有标题内容等.

我需要将这些值放在哪里来模拟我想要的行为?

hdfs.batchSize = x
hdfs.rollSize = x
hdfs.rollInterval = x
hdfs.rollCount = x
Run Code Online (Sandbox Code Playgroud)

请提供是否还有其他Flume代理配置变量我也需要更改.

如果使用现有配置无效,我是否需要使用自定义接收器才能达到我想要的效果?

感谢您的输入.

PS我知道hadoop fs -put-copyFromLocal更适合这项工作,但由于这是一个概念证明(表明我们可以使用Flume进行数据摄取),这就是我需要使用Flume的原因.

Eri*_*low 3

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

fileHeader  false   Whether to add a header storing the absolute path filename.
Run Code Online (Sandbox Code Playgroud)

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