Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flume 水槽批量_Flume - Fatal编程技术网

Flume 水槽批量

Flume 水槽批量,flume,Flume,我的水槽配置是 agent.sinks.sink.batchSize=10 哪一个水槽处理10次,每批,我得到的所有记录的时间相同 所以,这是一种可能的方法,可以为批处理中的每个记录获取不同的时间。是否用于设置时间戳 让我们看看它的: /** *在适当的位置修改事件。 */ @凌驾 公共事件截获(事件){ Map headers=event.getHeaders(); if(保留现有的&headers.containsKey(时间戳)){ //我们必须保留现有的时间戳 }否则{ long no

我的水槽配置是

agent.sinks.sink.batchSize=10
哪一个水槽处理
10次,每批
,我得到的所有记录的时间相同

所以,这是一种可能的方法,可以为批处理中的每个记录获取不同的时间。

是否用于设置时间戳

让我们看看它的:

/**
*在适当的位置修改事件。
*/
@凌驾
公共事件截获(事件){
Map headers=event.getHeaders();
if(保留现有的&headers.containsKey(时间戳)){
//我们必须保留现有的时间戳
}否则{
long now=System.currentTimeMillis();
headers.put(时间戳,Long.toString(现在));
}
返回事件;
}
/**
*循环中{@link#intercept(Event)}的委托。
*@param事件
*@返回
*/
@凌驾
公共列表截取(列表事件){
对于(事件:事件){
拦截(事件);
}
返回事件;
}
我假设
intercept(List events)
方法的执行时间非常小,以至于批处理中的所有事件都在一毫秒内处理。因此,不可能使用此拦截器强制批处理中的事件使用不同的时间戳

若您需要批处理中每个事件的唯一标识符,那个么您可以基于TimestampInterceptor代码编写自己的拦截器,它将批处理中的事件数附加到timestamp。但是,这并不能保证增强剂的全局唯一性,因为有可能在一毫秒内处理两个批次


要获得更具体的建议,请澄清您的要求。

其他选项是获取事件的正确时间戳-在生成时设置时间戳标头,或者解析字符串并以这种方式设置时间戳

  /**
   * Modifies events in-place.
   */
  @Override
  public Event intercept(Event event) {
    Map<String, String> headers = event.getHeaders();
    if (preserveExisting && headers.containsKey(TIMESTAMP)) {
      // we must preserve the existing timestamp
    } else {
      long now = System.currentTimeMillis();
      headers.put(TIMESTAMP, Long.toString(now));
    }
    return event;
  }

  /**
   * Delegates to {@link #intercept(Event)} in a loop.
   * @param events
   * @return
   */
  @Override
  public List<Event> intercept(List<Event> events) {
    for (Event event : events) {
      intercept(event);
    }
    return events;
  }