Tag: sequencefile

扩展SequenceFileInputFormat以包含文件名+偏移量

我希望能够创建一个自定义的InputFormat来读取序列文件,但是还要在该文件中公开记录所在的文件路径和偏移量。 退一步,这是用例:我有一个包含可变大小数据的序列文件。 密钥几乎不相关,并且值高达几兆字节,包含各种不同的字段。 我想索引elasticsearch中的一些字段以及文件名和偏移量。 这样,我可以从elasticsearch中查询这些字段,然后使用文件名和偏移量返回到序列文件并获取原始记录,而不是将整个内容存储在ES中。 我将整个过程作为单个java程序运行。 SequenceFile.Reader类方便地提供getPosition和seek方法来实现这一点。 但是,最终会涉及到数TB的数据,所以我需要将其转换为MapReduce作业(可能只有Map)。 由于序列文件中的实际键是无关紧要的,我希望采用的方法是创建一个自定义的InputFormat,它扩展或以某种方式利用SquenceFileInputFormat,而不是返回实际的键,而是返回一个由文件组成的复合键和抵消。 然而,事实certificate这在实践中更加困难。 看起来它应该是可能的,但考虑到实际的API以及暴露的内容,这很棘手。 有任何想法吗? 也许我应该采取另一种方法?

hadoop mapreduce:java.lang.UnsatisfiedLinkError:org.apache.hadoop.util.NativeCodeLoader.buildSupportsSnappy()Z

我正在尝试从map-reduce作业中编写一个snappy块压缩序列文件。 我正在使用hadoop 2.0.0-cdh4.5.0和snappy-java 1.0.4.1 这是我的代码: package jinvestor.jhouse.mr; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.Arrays; import java.util.List; import jinvestor.jhouse.core.House; import jinvestor.jhouse.core.util.HouseAvroUtil; import jinvestor.jhouse.download.HBaseHouseDAO; import org.apache.commons.io.IOUtils; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.LocatedFileStatus; import org.apache.hadoop.fs.Path; import org.apache.hadoop.fs.RemoteIterator; import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.io.ImmutableBytesWritable; import org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil; import org.apache.hadoop.hbase.mapreduce.TableMapper; import org.apache.hadoop.hbase.util.Bytes; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.SequenceFile; import org.apache.hadoop.io.compress.CompressionCodec; import org.apache.hadoop.io.compress.SnappyCodec; […]