m0_75173397 2024-02-16 10:13 采纳率: 0%
浏览 16

flume采集出现报错

采集到一条日期的数据后,就出现了报错,报错详情如下
[INFO - org.apache.flume.source.taildir.ReliableTaildirEventReader.readEvents(ReliableTaildirEventReader.java:192)] Last read was never committed - resetting position
[ERROR - org.apache.flume.source.taildir.TaildirSource.process(TaildirSource.java:247)] Unable to tail files
com.alibaba.fastjson.JSONException: expect ':' at 0, name client_i=24508850&idfrom=4084

img


flume采集文件脚本如下

img


该如何解决

  • 写回答

1条回答 默认 最新

  • 叫兽-郭老师 新星创作者: Java技术领域 2024-02-16 10:15
    关注

    参考通义千问和郭老师的小迷弟雅思莫了-编写提供,主要是为了帮助您快速解决问题,如下回答,您可以参考下,如有问题,评论区留言。

    根据您提供的Flume日志信息,报错来源于Fastjson在解析文件内容时遇到了格式错误。Fastjson是阿里巴巴的一个JSON解析库,Flume的TaildirSource在读取文件内容并尝试将其转换为JSON格式时出现了问题。

    错误信息 com.alibaba.fastjson.JSONException: expect ':' at 0, name client_i=24508850&idfrom=4084 指出,在解析的字符串开始位置期望找到一个冒号:来区分JSON对象的键值对,但实际上它遇到了等号=,这表明读取的数据可能并不是有效的JSON格式。

    如果您的日志文件中包含的是非JSON格式的数据,而Flume配置是按照JSON格式进行处理的,那么就会出现这种错误。要解决这个问题,请检查以下几点:

    1. 确认日志格式: 确保您正在采集的日志文件的内容符合Flume TaildirSource所期待的格式。如果是非JSON格式(例如,它是普通的文本日志或者使用了如log4j之类的自定义格式),则需要调整Flume源配置以适应正确的日志格式。

    2. 配置Flume源: 如果日志确实是非JSON格式,确保TaildirSource或其他相关组件(如Interceptor)配置正确,以便能正确解析日志行。例如,可以使用正则表达式或者其他方式提取所需字段。

    3. 使用Interceptor转换数据格式: 可以考虑添加一个Interceptor,将非JSON格式的数据转换成JSON格式,以便后续Sink能够正确处理。

    针对您的情况,如果数据本应是JSON格式但实际不是,那就需要排查生成日志的应用程序为何输出了不符合预期格式的数据。如果数据确实不是JSON,那么请修改Flume配置以适应实际情况。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月16日