logstash传输文本文件到HDFS

说明

1、这次主要是记录一下,前几天实现logstash传输文本信息到HDFS时,遇到的一个问题的解决办法,因为自己对logstash还不是很熟悉,所以当时折腾了很久,虽然发现解决方案很简单。
2、logstash有一个第三方插件:webhdfs

遇到的问题

logstash添加的字段与message之间的分隔符与message内部的分隔符不一致

问题描述

我的需求是,将以“,”分隔的文本文件通过logstash传输到HDFS上,然后通过hive建立外表连接,对其中的内容进行查询。
遇到的问题是,logstash将一行行的信息message传输写入hdfs文件时,会添加两个字段:timestamp和hostname,而且分隔符为空格,即:

timestamp hostname message

将message拆开后,存储到HDFS上每行的格式如下:

timestamp hostname 1,小明,1995,98

如此的格式,便无法建立hive查询表,因为整体的分隔符为空格,导致message是一个整体,而不是我们设想的以“,”为分隔符的每个字段对应hive表中的一个字段。这样不利于我们构建hive外表对它进行查询,所以想要将message的字段和添加的字段之间的分隔符保持一致。

解决方案

1、首先想要使用message_format进行解决,将timestamp hostname message之间的分隔符换成“,”,后来发现随着版本更新,webhdfs已经没有了该属性。
2、使用mutate插件的split将message分割,然后分别添加字段add_field,最后删除message,remove_field,后来发现添加没有任何效果,而删除最后得到%{message}的结果。
3、使用mutate插件的gsup解决了问题:gsub => [“message”, “,”, ” “]

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值