您好,登錄后才能下訂單哦!
小編給大家分享一下SequenceFile如何實現讀寫,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
SequenceFile 讀
public static void main(String[] args) throws IOException { Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(conf); Path seqFile = new Path("/user/hive/warehouse/abc/seqfile.seq"); SequenceFile.Reader reader = new SequenceFile.Reader(fs, seqFile, conf); IntWritable key = new IntWritable(); Text value = new Text(); while(reader.next(key, value)){ System.out.println(key); System.out.println(value); } IOUtils.closeStream(reader); }
聲明順序文件的Reader實例后,調用next() 方法迭代讀取記錄。最后需要關閉reader實例。
如果鍵值對讀取成功,則返回true;如果已經讀到文件末尾,則返回false。
SequenceFile 寫
public static void main(String[] args) throws IOException { Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(conf); Path targetPath = new Path("/user/hive/warehouse/test_url"); final Option optPath = SequenceFile.Writer.file(targetPath); final Option optKeyClass = SequenceFile.Writer.keyClass(Text.class); final Option optValueClass = SequenceFile.Writer.valueClass(BytesWritable.class); final SequenceFile.Writer writer = SequenceFile.createWriter(conf, optPath, optKeyClass, optValueClass); final Collection<File> listFiles = FileUtils.listFiles(new File("/data1/url/"), new String[]{"log"}, false); Text key = null; BytesWritable value = null; for (File file : listFiles) { key = new Text(file.getPath()); value = new BytesWritable(FileUtils.readFileToByteArray(file)); writer.append(key, value); } IOUtils.closeStream(writer); }
通過CreateWriter() 靜態方法創建SequenceFile 對象,并返回SequenceFile.Writer 實例。
擁有SequenceFile.Writer 實例后,就可以通過 append() 方法在文件末尾追加數據。
最后關閉實例。
看完了這篇文章,相信你對“SequenceFile如何實現讀寫”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。