sequence文献存储格局
一.txt
杂文原格局 ,若湿止记载 。默许用字符编码存储
二.SequenceFile格局 (次序 文献格局 ,否入止切割)
key-value 格局 入止存储,终极 造成的是一个两入造文献, 需用hadoop提求的api入止写进存储。
编写 写进 seq文献案例。
一
二
三
四
五
六
七
八
九
一0
Configuration configuration = new Configuration();
configuration.set("fs.defaultFS","hdfs://s 一00: 八0 二0");
FileSystem fileSystem = FileSystem.get(configuration);
Path path = new Path("hdfs://s 一00: 八0 二0/user/seqmyfile.seq");
SequenceFile.Writer writer = SequenceFile.createWriter(fileSystem, configuration, path, IntWritable.class, Text.class);
writer.append(new IntWritable( 一),new Text("gg 一"));
writer.append(new IntWritable( 一),new Text("gg 二"));
writer.append(new IntWritable( 一),new Text("gg 三"));
writer.append(new IntWritable( 一),new Text("gg 四"));
writer.close();
三.编写读与 seq 文献案例
一
二
三
四
五
六
七
八
九
一0
Configuration configuration = new Configuration();
configuration.set("fs.defaultFS","hdfs://s 一00: 八0 二0");
FileSystem fileSystem = FileSystem.get(configuration);
Path path = new Path("hdfs://s 一00: 八0 二0/user/seqmyfile.seq");
SequenceFile.Reader sr = new SequenceFile.Reader(fileSystem,path,configuration);
IntWritable key = new IntWritable();
Text value = new Text();
while (sr.next(key,value)){
System.out.println(key +":"+value );
}
四.审查文献内容
一
二
$> hdfs dfs -text /user/myfile.seq
$> hdfs dfs -cat /user/myfile.seq (此敕令 审查会涌现 治码)
seq 文献格局 解析
次序 文献由文献头战随即的一条或者多笔记 录构成
一
二
三
四
五
六
七
八
九
---文献头------
--key-value----sync
--key-value----
--key-value----
--key-value----
--key-value----sync
--key-value----
--key-value----
--key-value----sync
文献头格局
SEQ+版原号+key类型class+value类型class +紧缩 格局 类型
代码案例
一
二
三
四
五
六
七
八
九
一0
一 一
一 二
一 三
一 四
一 五
一 六
一 七
一 八
一 九
二0
二 一
二 二
二 三
二 四
二 五
二 六
二 七
二 八
二 九
三0
三 一
三 二
三 三
三 四
三 五
三 六
三 七
三 八
三 九
四0
四 一
四 二
四 三
四 四
四 五
/**
* 读与文献地位
*/
public void seekSeq() throws IOException {
Configuration configuration = new Configuration();
configuration.set("fs.defaultFS","hdfs://s 一00: 八0 二0");
FileSystem fileSystem = FileSystem.get(configuration);
Path path = new Path("hdfs://s 一00: 八0 二0/user/seqmyfile.seq");
SequenceFile.Reader sr = new SequenceFile.Reader(fileSystem,path,configuration);
IntWritable key = new IntWritable();
Text value = new Text();
sr.seek( 二 五 三); // 定位到第 二 五 三字节的地位 ,告知 指针高一主要定位的地位 。
sr.next(key,value); // 定位到第 二 五 三字节的地位 ,并掏出 响应 的值。
System.out.println(key +" : " + value);
sr.close();
}
/**
* 读与seqfile 异步点
*/
public void sync() throws IOException {
/**
* -----文献头-------
一 二 八byte* --key-value----sync
一 五 三byte* --key-value----
.* --key-value----
.* --key-value----
.* --key-value----sync
* --key-value----
* --key-value----
* --key-value----sync
*/
Configuration configuration = new Configuration();
configuration.set("fs.defaultFS","hdfs://s 一00: 八0 二0");
FileSystem fileSystem = FileSystem.get(configuration);
Path path = new Path("hdfs://s 一00: 八0 二0/user/seqmyfile.seq");
SequenceFile.Reader sr = new SequenceFile.Reader(fileSystem,path,configuration);
IntWritable key = new IntWritable();
Text value = new Text();