gpt4 book ai didi

Apache Flink 的 BZip2 压缩输入

转载 作者:行者123 更新时间:2023-12-02 11:50:57 25 4
gpt4 key购买 nike

我有一个用 bzip2 压缩的维基百科转储(从 http://dumps.wikimedia.org/enwiki/ 下载),但我不想解压它:我想在动态解压缩时处理它。

我知道可以用普通的 Java 来做到这一点(例如 Java - Read BZ2 file and uncompress/parse on the fly ),但我想知道如何在 Apache Flink 中做到这一点?我可能需要的是类似 https://github.com/whym/wikihadoop 的东西但对于 Flink,而不是 Hadoop。

最佳答案

在 Apache Flink 中可以读取以下格式的压缩文件:

org.apache.hadoop.io.compress.BZip2Codec
org.apache.hadoop.io.compress.DefaultCodec
org.apache.hadoop.io.compress.DeflateCodec
org.apache.hadoop.io.compress.GzipCodec
org.apache.hadoop.io.compress.Lz4Codec
org.apache.hadoop.io.compress.SnappyCodec

从包名称中可以看出,Flink 使用 Hadoop 的 InputFormats 来完成此操作。这是使用 Flink 的 Scala API 读取 gz 文件的示例:(您至少需要 Flink 0.8.1)

def main(args: Array[String]) {

val env = ExecutionEnvironment.getExecutionEnvironment
val job = new JobConf()
val hadoopInput = new TextInputFormat()
FileInputFormat.addInputPath(job, new Path("/home/robert/Downloads/cawiki-20140407-all-titles.gz"))
val lines = env.createHadoopInput(hadoopInput, classOf[LongWritable], classOf[Text], job)

lines.print

env.execute("Read gz files")
}

Apache Flink 仅内置对 .deflate 文件的支持。添加对更多压缩编解码器的支持很容易做到,但尚未完成。

将 HadoopInputFormats 与 Flink 结合使用不会导致任何性能损失。 Flink 具有对 Hadoop 的 Writable 类型的内置序列化支持。

关于Apache Flink 的 BZip2 压缩输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29429216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com