Fluentd 写日志到 HDFS

发布于 2022-09-03 19:51:40 字数 1217 浏览 23 评论 0

当前已经实现LogServer收集日志信息并调用Fluentd写入HDFS
由于使用Presto对HDFS中的数据进行分析, 因此使用Hive创建元数据库对HDFS中的数据进行管理
因此写入的数据要符合Hive创建的表结构
LogServer收集的日志信息为:

{
  "user":"tom",
  "event":"open.app"
}

对数据进行处理后:

// line
tom^Aopen.app^A

写入HDFS可以使用Presto查询到数据.

当前Fluentd配置:

<source>
  @type forward
  port 24224
  format hash
</source>

<match log.user>
  @type file
  format hash
  path /var/log/user.log
</match>

写入到文件中的日志是正确的, 符合tom^Aopen.app^A的格式

重新配置match:

<match log.user>
  @type webhdfs
  host master
  port 50070
  username root
  path "/user/hive/warehouse/data_user/user.%Y%m%d_%H%M.log"
  flush_interval 5s
  time_slice_format '%Y%m%d_%H%M%S'
  output_include_time false
  output_include_tag  false
</match>

此时写入到HDFS中的数据格式发生了变化:

"tom\u000open.app"

内容两边还包含了双引号


试过如下方法:

  1. 使用filter对数据进行过滤,转成hash,无效

  2. wedhdfs中配置format hash,无效

在此提问,望知道配置的人解答~

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文