Java 创建URI指向HDFS的文件实例

Java 创建URI指向HDFS的文件实例,java,scala,hadoop,hdfs,Java,Scala,Hadoop,Hdfs,是否可以通过将HDFS的uri作为文件类的构造函数来创建文件实例?例如: val conf = new Configuration() conf.addResource(hdfsCoreSitePath) conf.addResource(hdfsHDFSSitePath) val uri = conf.get("fs.default.name") val file = new File(uri + pathtothefile) 然后,对于file实例,我希望使用file类提供的函数(如fi

是否可以通过将HDFS的uri作为文件类的构造函数来创建文件实例?例如:

val conf = new Configuration()
conf.addResource(hdfsCoreSitePath)
conf.addResource(hdfsHDFSSitePath)

val uri = conf.get("fs.default.name")
val file = new File(uri + pathtothefile)
然后,对于file实例,我希望使用file类提供的函数(如
file.list()
)访问文件列表,以返回一个字符串数组,命名这个抽象路径名表示的目录中的文件和目录。我尝试了代码,但它在
文件.list()上返回
null

不推荐使用下面的方法,因为我正在尝试为普通文件系统和hdfs编写相同的代码库,以实现代码的可重用性

val fileSystem = FileSystem.get(conf)
val status = fileSystem.listStatus(new Path(filepath))
status.map(x => ...

fs.default.name
已弃用。尝试使用
fs.defaultFS
,并确保使用以下命令引用的core-site.xml文件中存在此属性

conf.addResource(hdfsCoreSitePath)

fs.default.name
已弃用。尝试使用
fs.defaultFS
,并确保使用以下命令引用的core-site.xml文件中存在此属性

conf.addResource(hdfsCoreSitePath)

常规内置Java/Scala文件API不适用于HDFS文件。协议和实现太不一样了。您必须使用HadoopAPI来访问HDFS文件,如第二个示例所示


不过,好消息是Hadoop API将适用于非HDFS文件(常规文件)。因此,代码是可重用的。只需使用如下URI:
file:///foo/bar
用于本地文件。

常规内置Java/Scala文件API不适用于HDFS文件。协议和实现太不一样了。您必须使用HadoopAPI来访问HDFS文件,如第二个示例所示


不过,好消息是Hadoop API将适用于非HDFS文件(常规文件)。因此,代码是可重用的。只需使用如下URI:
file:///foo/bar
用于本地文件。

我提到的方法,val fileSystem=fileSystem.get(conf)val status=fileSystem.listStatus(new Path(filepath))status.map(x=>…它正在工作,但出于某种原因,我尝试使用val file=new file(uri+pathtothefile)这不起作用,我想知道文件的uri只适用于普通文件系统,而不适用于HDFS我提到的方法,val fileSystem=fileSystem.get(conf)val status=fileSystem.listStatus(new Path(filepath))status.map(x=>…它起作用了,但出于某种原因,我尝试使用val file=new file(uri+pathtothefile)这不起作用,我想知道文件的uri只适用于普通文件系统,而不适用于hdfs