flume自定义sink
来源:互联网 发布:js new york 编辑:程序博客网 时间:2024/06/06 07:37
java文件:
package com.dle;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import org.apache.flume.Channel;import org.apache.flume.Context;import org.apache.flume.Event;import org.apache.flume.EventDeliveryException;import org.apache.flume.Transaction;import org.apache.flume.conf.Configurable;import org.apache.flume.sink.AbstractSink;import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class MySink extends AbstractSink implements Configurable { private static final Logger logger = LoggerFactory.getLogger(MySink.class); private static final String PROP_KEY_ROOTPATH = "fileName"; private String fileName; @Override public void configure(Context context) { // TODO Auto-generated method stub fileName = context.getString(PROP_KEY_ROOTPATH); } @Override public Status process() throws EventDeliveryException { // TODO Auto-generated method stub Channel ch = getChannel(); Transaction txn = ch.getTransaction(); Event event =null; txn.begin(); while(true){ event = ch.take(); if (event!=null) { break; } } try { logger.debug("Get event."); String body = new String(event.getBody()); String res = body + ":" + System.currentTimeMillis() + "\r\n"; File file = new File(fileName); FileOutputStream fos = null; try { fos = new FileOutputStream(file, true); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { fos.write(res.getBytes()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { fos.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } txn.commit(); return Status.READY; } catch (Throwable th) { txn.rollback(); if (th instanceof Error) { throw (Error) th; } else { throw new EventDeliveryException(th); } } finally { txn.close(); } }}
配置信息:
a1.sources = r1a1.sinks = k1a1.channels = c1# Describe/configure the sourcea1.sources.r1.type = execa1.sources.r1.channels = c1a1.sources.r1.command = tail -F /tmp/test/a.txt# Describe the sinka1.sinks.k1.type = com.dle.MySinka1.sinks.k1.fileName=/tmp/test/target.txt# Use a channel which buffers events in memorya1.channels.c1.type = memorya1.channels.c1.capacity = 1000a1.channels.c1.transactionCapacity = 100# Bind the source and sink to the channela1.sources.r1.channels = c1a1.sinks.k1.channel = c1
0 0
- flume自定义sink source
- flume自定义sink
- flume开发--自定义Sink
- flume开发--自定义Sink
- flume自定义sink
- flume 自定义 hbase sink 类
- flume-自定义Sink基本框架
- flume之自定义sink组件
- flume自定义interceptor和hbase sink
- flume 自定义source,sink,channel,拦截器
- Flume Sink
- Flume(ng) 自定义sink实现和属性注入
- 自定义的flume-ng的postgresql数据库sink
- Flume-ng 自定义sink实现和属性注入
- flume 自定义kafka sink运行失败:找不到Callback
- Flume(ng) 自定义sink实现和属性注入
- Flume自定义Source、Sink和Interceptor(简单功能实现)
- Flume(ng) 自定义sink实现和属性注入
- 类和对象1
- 268. Missing Number
- sql连接
- 安装TortoiseGit后别忘了这一步
- 热身运动之JS设置鼠标点击事件
- flume自定义sink
- C代码中如何调用C++ C++中如何调用C
- java学习笔记之异常
- java—可视化日历
- PHP实现排序算法----快速排序算法优化
- transform属性总结
- LeetCode 376. Wiggle Subsequence
- 敏捷和DevOps词汇表
- jsonp原理