您的位置:首页 > 编程语言 > Go语言

spark core 2.0 TimeTrackingOutputStream

2017-01-20 10:01 267 查看
TimeTrackingOutputStream 拦截写琼脂求,并且跟踪写操作花费的时间,并把时间写到shuffle write的metrics里。

/**
* Intercepts write calls and tracks total time spent writing in order to update shuffle write
* metrics. Not thread safe.
*/
@Private
public final class TimeTrackingOutputStream extends OutputStream {

private final ShuffleWriteMetrics writeMetrics;
private final OutputStream outputStream;

public TimeTrackingOutputStream(ShuffleWriteMetrics writeMetrics, OutputStream outputStream) {
this.writeMetrics = writeMetrics;
this.outputStream = outputStream;
}

@Override
public void write(int b) throws IOException {
final long startTime = System.nanoTime();
outputStream.write(b);
writeMetrics.incWriteTime(System.nanoTime() - startTime);
}

@Override
public void write(byte[] b) throws IOException {
final long startTime = System.nanoTime();
outputStream.write(b);
writeMetrics.incWriteTime(System.nanoTime() - startTime);
}

@Override
public void write(byte[] b, int off, int len) throws IOException {
final long startTime = System.nanoTime();
outputStream.write(b, off, len);
writeMetrics.incWriteTime(System.nanoTime() - startTime);
}

@Override
public void flush() throws IOException {
final long startTime = System.nanoTime();
outputStream.flush();
writeMetrics.incWriteTime(System.nanoTime() - startTime);
}

@Override
public void close() throws IOException {
final long startTime = System.nanoTime();
outputStream.close();
writeMetrics.incWriteTime(System.nanoTime() - startTime);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: