Search in sources :

Example 6 with StreamFileOffset

use of co.cask.cdap.data.stream.StreamFileOffset in project cdap by caskdata.

the class AbstractStreamFileConsumerFactory method getFileOffsets.

protected void getFileOffsets(Location partitionLocation, Collection<? super StreamFileOffset> fileOffsets, int generation) throws IOException {
    // TODO: Support dynamic writer instances discovery
    // Current assume it won't change and is based on cConf
    int instances = cConf.getInt(Constants.Stream.CONTAINER_INSTANCES);
    String filePrefix = cConf.get(Constants.Stream.FILE_PREFIX);
    for (int i = 0; i < instances; i++) {
        // The actual file prefix is formed by file prefix in cConf + writer instance id
        String streamFilePrefix = filePrefix + '.' + i;
        Location eventLocation = StreamUtils.createStreamLocation(partitionLocation, streamFilePrefix, 0, StreamFileType.EVENT);
        fileOffsets.add(new StreamFileOffset(eventLocation, 0, generation));
    }
}
Also used : StreamFileOffset(co.cask.cdap.data.stream.StreamFileOffset) Location(org.apache.twill.filesystem.Location)

Example 7 with StreamFileOffset

use of co.cask.cdap.data.stream.StreamFileOffset in project cdap by caskdata.

the class StreamFetchHandler method createReader.

/**
 * Creates a {@link FileReader} that starts reading stream event from the given partition.
 */
private FileReader<StreamEventOffset, Iterable<StreamFileOffset>> createReader(StreamConfig streamConfig, long startTime) throws IOException {
    int generation = StreamUtils.getGeneration(streamConfig);
    Location startPartition = getStartPartitionLocation(streamConfig, startTime, generation);
    if (startPartition == null) {
        return createEmptyReader();
    }
    List<StreamFileOffset> fileOffsets = Lists.newArrayList();
    int instances = cConf.getInt(Constants.Stream.CONTAINER_INSTANCES);
    String filePrefix = cConf.get(Constants.Stream.FILE_PREFIX);
    for (int i = 0; i < instances; i++) {
        // The actual file prefix is formed by file prefix in cConf + writer instance id
        String streamFilePrefix = filePrefix + '.' + i;
        Location eventLocation = StreamUtils.createStreamLocation(startPartition, streamFilePrefix, 0, StreamFileType.EVENT);
        fileOffsets.add(new StreamFileOffset(eventLocation, 0, generation));
    }
    MultiLiveStreamFileReader reader = new MultiLiveStreamFileReader(streamConfig, fileOffsets);
    reader.initialize();
    return reader;
}
Also used : MultiLiveStreamFileReader(co.cask.cdap.data.stream.MultiLiveStreamFileReader) StreamFileOffset(co.cask.cdap.data.stream.StreamFileOffset) Location(org.apache.twill.filesystem.Location)

Aggregations

StreamFileOffset (co.cask.cdap.data.stream.StreamFileOffset)7 Location (org.apache.twill.filesystem.Location)5 MultiLiveStreamFileReader (co.cask.cdap.data.stream.MultiLiveStreamFileReader)3 StreamId (co.cask.cdap.proto.id.StreamId)2 StreamEvent (co.cask.cdap.api.flow.flowlet.StreamEvent)1 FileReader (co.cask.cdap.data.file.FileReader)1 TimeRangeReadFilter (co.cask.cdap.data.stream.TimeRangeReadFilter)1 StreamConfig (co.cask.cdap.data2.transaction.stream.StreamConfig)1 ChunkResponder (co.cask.http.ChunkResponder)1 JsonWriter (com.google.gson.stream.JsonWriter)1 ByteBuf (io.netty.buffer.ByteBuf)1 ByteBufOutputStream (io.netty.buffer.ByteBufOutputStream)1 DefaultHttpHeaders (io.netty.handler.codec.http.DefaultHttpHeaders)1 IOException (java.io.IOException)1 OutputStreamWriter (java.io.OutputStreamWriter)1 List (java.util.List)1 GET (javax.ws.rs.GET)1 Path (javax.ws.rs.Path)1 Test (org.junit.Test)1