Google cloud dataflow Google云数据流中基于文件的源使用示例
有人能举一个简单的子类化FileBasedSource的例子吗?我是谷歌数据流新手,对Java非常缺乏经验。我的目标是在将行号作为键的同时读取文件,或者根据行号跳过行 的实现是理解基于文件的源如何工作的一个很好的起点。您的阅读器可能需要类似的内容(其中readNextLine()读取到行尾并更新偏移量):Google cloud dataflow Google云数据流中基于文件的源使用示例,google-cloud-dataflow,Google Cloud Dataflow,有人能举一个简单的子类化FileBasedSource的例子吗?我是谷歌数据流新手,对Java非常缺乏经验。我的目标是在将行号作为键的同时读取文件,或者根据行号跳过行 的实现是理解基于文件的源如何工作的一个很好的起点。您的阅读器可能需要类似的内容(其中readNextLine()读取到行尾并更新偏移量): 我用完整的示例创建了一个要点,它可能比XMLSource更简单。老实说,我发现XMLSource示例很难理解,因为它增加了XML的复杂性,增加了读取文件的问题。我必须想办法“减少”。但我找不到
我用完整的示例创建了一个要点,它可能比XMLSource更简单。老实说,我发现XMLSource示例很难理解,因为它增加了XML的复杂性,增加了读取文件的问题。我必须想办法“减少”。但我找不到。LineIO示例目前用于测试,仅在私人回购中可见,但我可以探索发布它。我发布了一个要点,并修改了答案。
protected void startReading(ReadableByteChannel channel) throws IOException {
if (getCurrentSource().getMode() == FileBasedSource.Mode.SINGLE_FILE_OR_SUBRANGE) {
// If we are not at the beginning of a line, we should ignore the current line.
if (getCurrentSource().getStartOffset() > 0) {
SeekableByteChannel seekChannel = (SeekableByteChannel) channel;
// Start from one character back and read till we find a new line.
seekChannel.position(seekChannel.position() - 1);
nextOffset = seekChannel.position() + readNextLine(new ByteArrayOutputStream());
}
}
}