【问题标题】:file path in hdfshdfs中的文件路径
【发布时间】:2017-07-04 15:36:11
【问题描述】:

我想从 Hadoop 文件系统中读取文件。

为了实现文件的正确路径,我需要hdfs的主机名和端口地址。

所以最后我的文件路径看起来像

Path path = new Path("hdfs://123.23.12.4344:9000/user/filename.txt")

现在我想知道如何提取 HostName = "123.23.12.4344" & port: 9000?

基本上,我想访问 Amazon EMR 上的文件系统,但是当我使用时

 FileSystem fs = FileSystem.get(getConf());
我得到
当您应该调用 FileSystem.get(uri, conf) 来获取支持您的路径的文件系统时,您可能会调用 FileSystem.get(conf)
所以我决定使用 URI。 (我必须使用 URI)但我不确定如何访问 URI。

【问题讨论】:

    标签: java hadoop amazon-ec2 mapreduce amazon-emr


    【解决方案1】:

    您可以使用这两种方法中的任何一种来解决您的错误。

    1.

    String infile = "file.txt";
    Path ofile = new Path(infile);
    FileSystem fs = ofile.getFileSystem(getConf());
    

    2.

    Configuration conf = getConf();
    System.out.println("fs.default.name : - " + conf.get("fs.default.name"));
    // It prints uri  as : hdfs://10.214.15.165:9000 or something
    String uri = conf.get("fs.default.name");
    FileSystem fs = FileSystem.get(uri,getConf());
    

    【讨论】:

    • 谢谢!它有帮助,你能解释这是为什么吗?
    • Hadoop 有一个文件系统工厂。它基于 URI 方案创建正确的文件系统,可能还有 URI 的权限部分。您可以查看是否要在 file://、s3:// 或 hdfs:// 上打开文件,您需要为每个文件使用不同的文件系统。这就是为什么您需要包含 URI
    • fs.default.name 已弃用,此问题的每个读者都应改用 fs.defaultFS。
    猜你喜欢
    • 1970-01-01
    • 2017-03-14
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2018-01-17
    • 1970-01-01
    • 2014-07-27
    • 2016-06-15
    相关资源
    最近更新 更多