关于flume中涉及到时间戳的错误解决,Expected timestamp in the Flume even

摘要:
butitwasull atorg.apache.wium.sink.hdfs.HDFSEventSink.process(HDFSEventSink.java:471)atorg.apache.vium.sink.DefaultSinkProcessor.process(DefaultSinkProcessor.java:
在搭建flume集群收集日志写入hdfs时发生了下面的错误:
java.lang.NullPointerException: Expected timestamp in the Flume event headers, but it was null
        at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:204)
        at org.apache.flume.formatter.output.BucketPath.replaceShorthand(BucketPath.java:200)
        at org.apache.flume.formatter.output.BucketPath.escapeString(BucketPath.java:396)
        at org.apache.flume.sink.hdfs.HDFSEventSink.process(HDFSEventSink.java:388)
        at org.apache.flume.sink.DefaultSinkProcessor.process(DefaultSinkProcessor.java:68)
        at org.apache.flume.SinkRunner$PollingRunner.run(SinkRunner.java:147)
        at java.lang.Thread.run(Thread.java:744)
2015-06-18 15:31:41,836 (SinkRunner-PollingRunner-DefaultSinkProcessor) [ERROR - org.apache.flume.SinkRunner$PollingRunner.run(SinkRunner.java:160)] Unable to deliver event. Exception follows.
org.apache.flume.EventDeliveryException: java.lang.NullPointerException: Expected timestamp in the Flume event headers, but it was null
        at org.apache.flume.sink.hdfs.HDFSEventSink.process(HDFSEventSink.java:471)
        at org.apache.flume.sink.DefaultSinkProcessor.process(DefaultSinkProcessor.java:68)
        at org.apache.flume.SinkRunner$PollingRunner.run(SinkRunner.java:147)
        at java.lang.Thread.run(Thread.java:744)
Caused by: java.lang.NullPointerException: Expected timestamp in the Flume event headers, but it was null
        at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:204)
        at org.apache.flume.formatter.output.BucketPath.replaceShorthand(BucketPath.java:200)
        at org.apache.flume.formatter.output.BucketPath.escapeString(BucketPath.java:396)
        at org.apache.flume.sink.hdfs.HDFSEventSink.process(HDFSEventSink.java:388)
        ... 3 more
 
原因是因为写入到hfds时使用到了时间戳来区分目录结构,flume的消息组件event在接受到之后在header中没有发现时间戳参数,导致该错误发生,有三种方法可以解决这个错误;
1、agent1.sources.source1.interceptors = t1
     agent1.sources.source1.interceptors.t1.type = timestamp  为source添加拦截,每条event头中加入时间戳;(效率会慢一些)
2、agent1.sinks.sink1.hdfs.useLocalTimeStamp = true 为sink指定该参数为true (如果客户端和flume集群时间不一致数据时间会不准确)
3、在向source发送event时,将时间戳参数添加到event的header中即可,header是一个map,添加时mapkey为timestamp(推荐使用)

免责声明:文章转载自《关于flume中涉及到时间戳的错误解决,Expected timestamp in the Flume even》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇java中实现定时任务 task 或quartzProtobuf + gRPC Android Studio接入指南下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Android学习笔记12:图像渲染(Shader)

在Android中,提供了Shader类专门用来渲染图像以及一些几何图形。   Shader类包括了5个直接子类,分别为:BitmapShader、ComposeShader、LinearGradient、RadialGradient以及SweepGradient。其中,BitmapShader用于图像渲染;ComposeShader用于混合渲染;Line...

测试服务器IO

最近服务器反映很慢,查看服务器上的应用程序经常出现超时等等,而且还有时候出现卡死的情况,经过发现服务器I/O压力很大,压力来自硬盘的I/O访问已经达到100% 最后原因是线上业务代码同一时间写入导致服务器硬盘I/O爆表了,我这里纪录一下为了方便各位和自己今后遇到此类问题能尽快解决 使用 top 命令来看一下 实时查看系统状态信息 [root@Mike-VM...

ABAP学习(24):Smartforms示例

ABAP Smartforms        ABAP创建可以打印的窗体,二维码等。Tcode: SMARTFORMS,可以创建对应Form以及对应样式Style。 1.创建Style   创建Style:ZTOM_TEST_STYLE1; 整体样式, 指定默认Paragraph的格式L1; 指定字体,大小等;   Paragraph样式, 指定段落字体对...

java学习手记:推荐编辑器UltraEdit及其配置

 如果不是进行大型的项目开发,只是自己初步学习java,而其中不免要编写测试书上的好多程序,这时我们不用下载安装像Eclipse、JBuilder这些庞大的集成开发环境(IDE)。在这里向大家推荐一款小巧的文本编辑工具UltraEdit。           UltraEdit 是一套功能强大的文本编辑器,可以编辑文本、十六进制、ASCII 码,完全可以取...

javafx:JavaFX Scene Builder 2.0打开含有第三方jar包的fxml文件报错 Caused by: java.lang.ClassNotFoundException

报错如下: java.io.IOException: javafx.fxml.LoadException: /C:/User.................test.fxml at com.oracle.javafx.scenebuilder.kit.fxom.FXOMLoader.load(FXOMLoader.java:92) at com.or...

利用 ADO.NET 连接到 Informix(转)

从 Connection 到强类型 DataSet 文档选项 打印本页 将此页作为电子邮件发送 未显示需要 JavaScript 的文档选项 讨论 样例代码 级别: 中级 Sean R. Durity (sdurity@cornercap.com), IT 管理人员, Co...