java - 使用 java :no output 从 hadoop 读取文件

标签 java hadoop hdfs

我正在尝试从 HDFS 读取和写入文件。首先,我试图阅读它并将其显示在控制台上。它运行时没有给出任何错误、警告,但它也没有在控制台上打印文件中的数据,我的文件已经保存在 hdfs 中,我可以在用户界面上看到它。我认为我给出的路径存在一些问题,我不确定,因为我是第一次将 hadoop 连接到 java。我正在使用 eclipse 作为 IDE。有人可以调查一下吗?

我也尝试为名称节点提供 50075 端口号,但这也没有用。

编辑:谁能告诉我如何在 java 中给出正确的路径以访问存储在 hdfs 中的文件?

我遇到了这个异常

文件file:/localhost:54310/user/hduser/project11/a.txt不存在

java.io.FileNotFoundException: 文件 file:/localhost:54310/user/hduser/project11/a.txt 不存在。

at org.apache.hadoop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.java:397)
at org.apache.hadoop.fs.FilterFileSystem.getFileStatus(FilterFileSystem.java:251)
at org.apache.hadoop.fs.ChecksumFileSystem$ChecksumFSInputChecker.<init>(ChecksumFileSystem.java:125)
 at org.apache.hadoop.fs.ChecksumFileSystem.open(ChecksumFileSystem.java:283)
at org.apache.hadoop.fs.FileSystem.open(FileSystem.java:427)
at newclassentry.main(newclassentry.java:16)

存在与路径相关的问题,但我不知道什么是正确的路径。

在本地主机名称节点上,我在/user/hduser/project11 文件夹中访问它。 该文件不为空。 代码:

import java.io.*;
import java.util.*;
import java.net.*;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.conf.*;
import org.apache.hadoop.io.*;
import org.apache.hadoop.mapred.*;
import org.apache.hadoop.util.*;

public class newclassentry {

    public static void main(String [] args) throws Exception {
        try {
            Path pt = new Path("hdfs://localhost:54310/user/hduser/project11/a.txt");
            FileSystem fs = FileSystem.get(new Configuration());
            conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
            BufferedReader br = new BufferedReader(new InputStreamReader(fs.open(pt)));

            String line;
            line = br.readLine();
            while ((line = br.readLine()) != null) {
                System.out.println(line);
                line = br.readLine();
            }
            br.close();
        }
        catch (Exception e) {
            System.out.println(e.getMessage());
            e.printStackTrace();
        }
    }
}

最佳答案

解决方法:

我们需要添加core-site.xml 用于通过hdfs访问 conf.addResource(新路径(Vars.HADOOP_HOME +"/conf/core-site.xml"));

感谢大家定位最初的问题。

关于java - 使用 java :no output 从 hadoop 读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24080141/

相关文章:

hadoop - 是否可以在不设置HDFS的情况下运行Hadoop流应用程序?

hadoop - 如何在不使用 Cloudera 管理器的情况下在 100 节点集群上安装 Cloudera CDH?

java - Android - 如何使按钮不可见但仍处于 Activity 状态?

在 Google Drive 文档上创建多个权限时的 Java 异常

hadoop - Ambari 无法启动 Namenode

hadoop - 插入覆盖目录的 Hive Case 语句

hadoop - 使用JAVA将文件从HDFS复制到本地文件系统

hadoop - 如何在终端中编辑 HDFS 中的 txt 文件?

java - 如何在每 10 个单词后拆分一个字符串?

java - 如何改善应用程序的 ActivityManager 加载时间?