如何在hadoop和sequencefile上使用snappy

vsmadaxz  于 2021-05-31  发布在  Hadoop
关注(0)|答案(0)|浏览(214)

我想在mapreduce作业中使用snappy。所以我在我的驱动器中添加了行。

@Override
public int run(String[] strings) throws Exception {
    Configuration conf = getConf();
    conf.setBoolean("mapred.compress.map.output", true);
    conf.set("mapred.map.output.compression.codec", "org.apache.hadoop.io.compress.SnappyCodec");

    Job myJob = new Job(conf, title);
    FileInputFormat.addInputPath(myJob, input);
    FileOutputFormat.setOutputPath(myJob, output);

    myJob.setJarByClass(UniStarOpt.class);
    myJob.setMapperClass(CCMapper.class);
    myJob.setReducerClass(CCReducer.class);
    myJob.setInputFormatClass(SequenceFileInputFormat.class);
    myJob.setOutputFormatClass(SequenceFileOutputFormat.class);

    SequenceFileOutputFormat.setCompressOutput(myJob, true);
    SequenceFileOutputFormat.setOutputCompressorClass(myJob, SnappyCodec.class);
    SequenceFileOutputFormat.setOutputCompressionType(myJob, CompressionType.BLOCK);

    myJob.setOutputKeyClass(IntWritable.class);
    myJob.setOutputValueClass(IntWritable.class);

    myJob.waitForCompletion(true);
}

我使用maven添加了如下的snappy依赖项。

<dependency>
    <groupId>org.xerial.snappy</groupId>
    <artifactId>snappy-java</artifactId>
    <version>1.1.7.3</version>
</dependency>

但不知怎么的,错误还是发生了。下面是错误消息。
java.lang.exception:java.lang.unsatifiedLinkError:org.apache.hadoop.util.nativecodeloader.buildsupportssnappy()z
我不知道为什么会发生这种错误。你能告诉我原因吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题