不使用Hadoop命令运行Hadoop Java代码

不使用Hadoop命令运行Hadoop Java代码,hadoop,hdfs,Hadoop,Hdfs,我对Hadoop非常陌生,我想知道是否有可能使用“Java-jar”执行这个Hadoop Java客户机代码 我的代码使用“hadoopjar”命令工作。但是,当我尝试使用“java-jar”而不是“hadoop-jar”执行此代码时,它无法在HDFS中找到该文件,并且方法getHomeDirectory()返回一个不存在的本地路径 是否未正确添加我的配置文件?为什么代码只有在Hadoop命令下执行时才能工作 public void readFile(String file) throws IO

我对Hadoop非常陌生,我想知道是否有可能使用“Java-jar”执行这个Hadoop Java客户机代码

我的代码使用“hadoopjar”命令工作。但是,当我尝试使用“java-jar”而不是“hadoop-jar”执行此代码时,它无法在HDFS中找到该文件,并且方法getHomeDirectory()返回一个不存在的本地路径

是否未正确添加我的配置文件?为什么代码只有在Hadoop命令下执行时才能工作

public void readFile(String file) throws IOException {
    Cofiguration conf = new Configuration();
    conf.addResource(new Path("/usr/local/hadoop-2.7.3/etc/hadoop/core-site.xml"))
    conf.addResource(new Path("/usr/local/hadoop-2.7.3/etc/hadoop/hdfs-site.xml"))
    conf.addResource(new Path("/usr/local/hadoop-2.7.3/etc/hadoop/mapred-site.xml"))
}
FileSystem fileSystem = FileSystem.get(conf);
System.out.println("DefaultFS:      " + cong.get("fs.defaultFS"));
System.out.println("Home directory: " + fileSystem.getHomeDirectory());

Path path = new Path(file);
if(!fileSystem.exists(path)) {
    System.out.println("File " + file + " does not exists");
    return;
}
Instead of passing a Path object, pass the file path as string

    conf.addResource("/usr/local/hadoop-2.7.3/etc/hadoop/core-site.xml");
    conf.addResource("/usr/local/hadoop-2.7.3/etc/hadoop/hdfs-site.xml");
    conf.addResource("/usr/local/hadoop-2.7.3/etc/hadoop/mapred-site.xml");

Or else you could add these files to classpath and try.

    conf.addResource("core-site.xml");
    conf.addResource("hdfs-site.xml");
    conf.addResource("mapred-site.xml");