// 5. 查看hdfs上的hdfsjava目录下myLocalFile.txt文件内容 if (fs.exists(new Path(hdfsFilePath) {{ BufferedReader reader = new BufferedReader(new InputStreamReader(fs.open(new Path(hdfsFilePath)))); System.out.println("文件 " + hdfsFilePath + " 的内容:");} String line; while ((line = reader.readLine()) != null) { System.out.println(line); } reader.close(); } else { System.out.println("文件 " + hdfsFilePath + " 不存在"); }
时间: 2023-06-02 12:02:45 浏览: 162
该代码段是一个Java程序,用于查看HDFS上的文件内容。具体来说,它检查给定路径下的文件是否存在,如果存在则打印出文件内容。如果文件不存在,则打印出相应的错误信息。
代码中使用了Hadoop的FileSystem类来访问HDFS。首先,它检查给定路径下的文件是否存在。如果文件存在,则创建一个BufferedReader对象来读取文件内容,并逐行打印出来。最后,关闭BufferedReader对象。如果文件不存在,则打印出相应的错误信息。
需要注意的是,该代码段中的hdfsFilePath变量需要根据实际情况进行设置,以指定要查看的文件路径。另外,需要在代码中导入相应的Hadoop类库。
相关问题
Configuration conf = new Configuration(); conf.set("fs.defaultFS", "hdfs://192.168.146.81:9000"); Job job = Job.getInstance(conf); job.setJarByClass(WeatherDriver.class); job.setMapperClass(WeatherMapper.class); job.setMapOutputKeyClass(Text.class); job.setMapOutputValueClass(WeatherBean.class); job.setReducerClass(WeatherReducer.class); job.setOutputKeyClass(NullWritable.class); job.setOutputValueClass(WeatherBean.class); //job.setNumReduceTasks(0); FileInputFormat.setInputPaths(job, new Path("/weather/input/china_data.txt")); Path out = new Path("/weather/out"); FileSystem fs = FileSystem.get(new URI("hdfs://192.168.146.81:9000"), conf, "root"); if(fs.exists(out)) { fs.delete(out, true); } FileOutputFormat.setOutputPath(job, out); boolean flag = job.waitForCompletion(true); System.out.println(flag ? 0 : 1);是干啥的
这是一个使用Hadoop MapReduce框架实现的天气数据处理程序,主要功能是读取位于HDFS上的输入文件,对其中的数据进行处理,并将结果输出到HDFS上的指定目录。具体来说,该程序包括了一个Mapper类和一个Reducer类,Mapper类将输入数据进行拆分和转换,生成一系列键值对,Reducer类对这些键值对进行聚合和统计,最终输出结果。在代码中,还包括了一些与Hadoop相关的配置信息,以及一些文件读写和删除的操作。
try{ String fileName = "test"; Configuration conf = new Configuration(); conf.set("fs.defaultFS", "hdfs://10.4.6.201:9000"); conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem"); FileSystem fs = FileSystem.get(conf); System.out.println("ss"); boolean exists = fs.exists(new Path(fileName)); System.out.println(exists); if(exists){ System.out.println("文件存在"); }else{ System.out.println("文件不存在"); } }catch (Exception e){ System.out.println("111"); e.printStackTrace(); }为什么不执行if判断
在你提供的代码中,判断文件是否存在的逻辑是正确的,问题可能出现在文件名的传递上。你传递的文件名是"test",如果这个文件名是一个相对路径,那么它指的是相对于当前用户目录的路径。如果当前用户目录并不是你期望的目录,那么就会导致文件判断出错。
你可以尝试使用绝对路径来指定文件名,例如:
```java
String fileName = "/user/hadoop/test.txt";
```
其中,`/user/hadoop`是HDFS中的一个目录,你需要根据实际情况来替换这个目录。如果你要访问的是本地文件系统,那么可以使用类似于`file:///path/to/file`的路径来指定文件名。
阅读全文