不出不测的话,你可以在节制台看到你指定文件的内容。在这一步我碰着一个题目,就是无法直接在 windows 下操纵 HDFS,详细的办理要领可以参照这篇文章。FSDataInputStream.seek()要领还可以实现从文件输入流的恣意一个绝对位置读取文件内容,好比我们可以在上面代码中添加如下的内容来实此刻节制台一再打印文件内容。
- in.seek(0);
- tils.copyBytes(in, System.out, 4096, false);
建设目次。
- @Test
- public void mkdir() throws IOException {
- fs.mkdirs(new Path("/test/api"));
- }
查询文件目次。
- @Test
- public void ls() throws IOException {
- FileStatus[] fileStatuses = fs.listStatus(new Path("/"));
- if (null == fileStatuses || fileStatuses.length == 0) {
- return;
- }
- for (FileStatus fileStatus : fileStatuses) {
- System.out.println(fileStatus.getPath() + " " + fileStatus.getPermission());
- }
- }
这里引入一个类 FileStatus,这个类封装了 HDFS 中文件和目次的元数据,包罗文件长度、块巨细、复本、修改时刻、全部者以及权限信息。FileSystem 内里提供的 listStatus 要领可以获取一个目次下的全部目次可能文件的 FileStatus,可是它不会递归获取下级目次的内容,这里可以开拓你的想象本身实现一下(Tips:fileStatus.isDirectory()可以判定这个 fileStatus 是否是一个文件夹)。
删除文件或目次。
- @Test
- public void delete() throws IOException {
- fs.delete(new Path("/test/api"), false);
- }
- @Test
- public void deleteNonEmptyDir() throws IOException {
- fs.delete(new Path("/test"), true);
- }
我们可以看到 fs.delete()这个要领有两个参数,第一个参数很好领略,就是我们要删除的目次可能文件的地点。那么第二个 Boolean 范例的参数呢,假如删除的是文件可能空目次这个参数现实上是会被忽略的,假如删除的长短空目次,只有在这个参数值为 true 的时辰才会乐成删除。
建设文件和文件写入。
我们通过 FileSystem.create()要领来建设一个文件,这个要了解顺带着建设不存在的父级目次,假如不必要这个的话,最好是在建设之前挪用 exists()要领来判定一下,假如父级目次不存在直接报错即可。
- @Test
- public void create() throws IOException {
- FSDataOutputStream out = null;
- try {
- out = fs.create(new Path("/test/api/test.txt"));
- out.writeChars("hello hdfs.");
- } finally {
- IOUtils.closeStream(out);
- }
- }
文件建设好后,可以通过 append()要领在文件末端添加内容。
- @Test
- public void append() throws IOException {
- FSDataOutputStream out = null;
- try {
- out = fs.append(new Path("/test/api/test.txt"));
- out.writeChars("hello hdfs.");
- } finally {
- out.close();
- }
- }
从当地上传文件到 HDFS。
- 清单 12. JavaApi 上传文件至 HDFS
- @Test
- public void copyFromLocal() throws IOException {
- fs.copyFromLocalFile(new Path("d:/local.txt"), new Path("/test/api"));
- }
从 HDFS 上下载文件。
- 清单 13. JavaApi 从 HDFS 下载文件
- @Test
- public void copyToLocal() throws IOException {
- fs.copyToLocalFile(new Path("/test/api/local.txt"), new Path("E:/"));
- }
MapReduce 拭魅战
什么是 MapReduce (编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|