考试 现有程序:在命令行中用“ ls_hdfs /user ”命令实现对HDFS文件系统中目录“ /user ”下的文件的文件名、文件块的大小、文件内容长度打印显示,如下图:请填空,实现全部程序功能。 (图像) public class ls_hdfs { static FileSystem fs = null; //连接文件系统 static void init() throws Exception { // 构造一个配置参数对象,设置一个参数:我们要访问的hdfs的URI Configuration conf = new Configuration(); // 指定HDFS文件系统的namenode节点为:192.168.121.134,服务端口为:9000 空1:_________________________________ // 设置客户端身份为:root System.setProperty("HADOOP_USER_NAME", "root"); // 通过FileSystem的静态方法获取文件系统客户端对象 空2:_________________________________ } //显示文件列表 static void ListFiles(String dir) throws FileNotFoundException, IllegalArgumentException, IOException { // 获取迭代器对象 while (fileList.hasNext()) { LocatedFileStatus fileStatus = fileList.next(); // 打印当前文件名 String fileName=fileStatus.getPath().getName(); 空4:_________________________________ // 打印当前文件块大小 空5:_________________________________ System.out.println(fileBlock); // 打印当前文件内容长度 Long fileLong=fileStatus.getLen(); System.out.println(fileLong); } //关闭文件系统 空6:_________________________________ } public static void main(String[] args) throws Exception { //连接HDFS init(); //显示文件列表 空7:_________________________________ } }
时间: 2024-02-10 12:34:49 浏览: 22
空1:conf.set("fs.defaultFS", "hdfs://192.168.121.134:9000");
空2:fs = FileSystem.get(new URI("hdfs://192.168.121.134:9000"), new Configuration());
空4:BlockLocation[] blocks = fileStatus.getBlockLocations(); String fileBlock = ""; for(BlockLocation block : blocks) { fileBlock += block.getLength() + " "; }
空5:String fileBlock = ""; for(BlockLocation block : blocks) { fileBlock += block.getLength() + " "; }
空6:fs.close();
空7:RemoteIterator<LocatedFileStatus> fileList = fs.listFiles(new Path(dir), true); ListFiles(dir);
相关问题
hdfs://master:9000/user/hang/QuasiMonteCarlo_1690526511573_1289357800/out/reduce-out
你的问题是关于文件路径的。这个路径看起来像是一个HDFS(Hadoop分布式文件系统)中的文件路径。HDFS是用于存储大规模数据的文件系统。
根据你提供的路径,它指向一个名为"QuasiMonteCarlo_1690526511573_1289357800"的目录,其中包含一个名为"reduce-out"的文件。这里的"hdfs://master:9000"表示HDFS的主节点地址和端口号。
如果你想访问这个文件,你可以使用HDFS的相关命令或API来进行操作。具体的命令和操作方式取决于你使用的Hadoop版本和编程语言。
希望以上信息对你有所帮助!如果你还有其他问题,请随时提问。
awk 将hdfs://ns2/data/music/mgba2/hive/music_mgba2_migu/recsys/user_subscribe变为hdfs://ns2/data/music/mgba2/hive/music_mgba2_migu/recsys/user_subscribe%
您可以使用 awk 的子字符串替换功能来解决这个问题。下面是示例代码:
```
echo "hdfs://ns2/data/music/mgba2/hive/music_mgba2_migu/recsys/user_subscribe" | awk '{sub(/user_subscribe/, "user_subscribe%"); print}'
```
输出结果为:hdfs://ns2/data/music/mgba2/hive/music_mgba2_migu/recsys/user_subscribe%
这里使用了 awk 的 sub 函数,它将字符串中匹配到的第一个子字符串替换为指定的字符串。在这里,我们用 % 替换了 user_subscribe。最后通过 print 函数输出结果。