当前位置: 首页 > 知识库问答 >
问题:

使用Flume将CSV文件写入HDFS

莘康裕
2023-03-14

我正在使用Flume从我的本地文件系统写一些CSV文件到HDFS。

我想知道HDFS水槽的最佳配置是什么,这样本地系统上的每个文件都会在HDFS以CSV格式准确复制。我希望Flume处理的每个CSV文件都是单个事件,作为单个文件刷新和写入。尽可能多地,我希望文件是完全一样的,没有标题的东西等。

我需要在这些值上加什么来模拟我想要的行为?

hdfs.batchSize = x
hdfs.rollSize = x
hdfs.rollInterval = x
hdfs.rollCount = x

如果还有其他Flume代理配置变量需要更改,请提供。

如果这在使用现有配置时不起作用,那么我需要使用自定义接收器来实现我想要的吗?

感谢您的意见。

另外,我知道hadoop fs-put或-copyFromLocal更适合这项工作,但因为这是一个概念证明(表明我们可以使用Flume进行数据摄取),所以我需要使用Flume。

共有1个答案

哈扬
2023-03-14

您必须通过将值设置为 0 来禁用所有 roll* 属性。这将有效地防止水槽滚动文件。您可能已经注意到,flume 基于每个事件运行,在大多数情况下,事件是文件中的一行。要同时实现文件结构本身的保留,您需要使用后台打印源并激活 fileHeader:

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

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

 类似资料:
  • 在HDFS中写入日志文件的最佳方式是什么?我正在尝试配置Apache Flume,并尝试配置能够为我提供数据可靠性的源。我试图配置“exec”,后来也查看了“spooldir”,但flume.apache上的以下文档。org对我的意图表示怀疑- 执行来源: 最常请求的功能之一是像“tail -F file_name”这样的用例,其中应用程序写入磁盘上的日志文件,Flume 尾随文件,将每一行作为事

  • 问题内容: 将结构转储到提供的csv文件中的惯用golang方法是什么?我在一个func里面,我的结构作为接口{}传递: 为什么要使用界面{}?-从JSON读取数据,可能会返回一些不同的结构,因此尝试编写足够通用的函数。 我的类型的一个例子: 问题答案: 如果您使用具体类型,将会容易得多。您可能想要使用该软件包,这是一个相关示例;https://golang.org/pkg/encoding/cs

  • 我正在尝试将以下数据写入csv文件。这些数据是employdetails name1-surname1-place1 名称4-surname4-place4 我希望输出在CSV文件上,一个在另一个下面,在单独的行上。 我写了下面的代码 -KD

  • 问题内容: 我有一个pandas数据框,我想将其写入CSV文件。我正在使用以下方法: 并得到错误: 有什么方法可以轻松解决此问题(即我的数据框中有Unicode字符)吗?有没有一种方法可以使用例如“ to-tab”方法(我认为不存在)写入制表符分隔文件而不是CSV? 问题答案: 要用制表符分隔,可以使用参数: 要使用特定的编码(例如),请使用参数:

  • 我正在尝试将json文件转换为csv文件。json文件来自tweepy。 但是当我打印它的时候,它起作用了。当我只写时,它就起作用了。 我是一个新手在Python和twepy。但是我的直觉告诉我,这个问题与json文件本身有关。 这是json文件本身: 另一个错误: Traceback(最近一次调用):文件"C:\用户\用户\桌面\fase 1-20170930T062552Z-001\trans

  • 问题内容: 嗨,我正在尝试使用python将csv文件写入SQL Server数据库中的表中。传递参数时遇到错误,但是手动进行操作时不会遇到任何错误。这是我正在执行的代码。 错误:pyodbc.DataError :(“ 22001”,“ [22001] [Microsoft] [ODBC SQL Server驱动程序] [SQL Server]字符串或二进制数据将被截断。(8152)(SQLEx