我正在使用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的原因.
您必须通过将值设置为 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 接收器路径规范中引用该属性。
| 归档时间: |
|
| 查看次数: |
1138 次 |
| 最近记录: |