【问题标题】:Flume Custom HTTPSourceHandler GZipped FileFlume 自定义 HTTPSourceHandler GZipped 文件
【发布时间】:2015-11-11 00:06:48
【问题描述】:

我正在尝试创建一个自定义 Flume HTTPSourceHandler 来处理在 HTTP 请求的 POST 正文中发送的文件的内容,并且该帖子的有效负载将被压缩。

我是 Flume 的新手,并且正在努力理解如何将这个 GZip 文件的内容(或与此相关的任何数据)作为 Flume 事件返回。

这是我正在处理的一些不完整的代码。现在的主要目标是简单地将文件控制台打印到控制台。

任何提示、示例等都会非常有帮助。

import org.apache.flume.Event;
import org.apache.flume.source.http.HTTPSourceHandler;
import org.apache.http.HttpHeaders;

import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.GZIPInputStream;

public class HttpGzipHandler extends HTTPSourceHandler{

    public HttpGzipHandler(){

    }

    public List<Event> getEvents(HttpServletRequest request) throws Exception {
        boolean isGzipped = request.getHeader(HttpHeaders.CONTENT_ENCODING) != null
                && request.getHeader(HttpHeaders.CONTENT_ENCODING).contains("gzip");
        GZIPInputStream gzipInputStream = new GZIPInputStream(request.getInputStream());

        List<Event> eventList = new ArrayList<Event>(0);


        //TODO: Return the Events
    }

}

【问题讨论】:

    标签: java flume flume-ng


    【解决方案1】:

    您可以查看我为名为 Cygnus 的工具开发的 custom Http handler,作为灵感。我认为对您来说重要的部分将是创建和发出事件的代码:

    // create the appropiate headers
    Map<String, String> eventHeaders = new HashMap<String, String>();
    eventHeaders.put(..., ...);
    
    // create the event list containing only one event
    ArrayList<Event> eventList = new ArrayList<Event>();
    Event event = EventBuilder.withBody(data.getBytes(), eventHeaders);
    eventList.add(event);
    
    return eventList;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多