gpt4 book ai didi

scala - 列出Scala中非默认文件系统上的文件

转载 作者:行者123 更新时间:2023-12-02 19:54:20 26 4
gpt4 key购买 nike

我需要访问作业中的多个Azure Blob。示例:对于一项足够简单的任务(例如在文件系统上列出文件),可以通过以下方式简单地为defaultFS实现:

val hc = ss.sparkContext.hadoopConfiguration
val fs = org.apache.hadoop.fs.FileSystem.get(hc)
val files = fs.listFiles(new Path(path))

我只是想在非defaultFS上实现上述目标。我认为可以通过在 core-site.xml中具有其他fs的相关凭据(或通过执行 hc.put("fs.azure.account.key.<blob_name>.blob.core.windows.net", value)并使用原始路径( wasbs://<container_name>@<blob_name>.blob.core.windows.net/...)添加配置)来实现此目的,但这会产生FileNotFoundException。

如何访问非默认fs(当然,不覆盖defaultFS)?

最佳答案

这在Scala中针对S3和HDFS对我有用。它也应该在Azure上工作。我认为您在初始化文件系统时缺少URI。

import org.apache.hadoop.fs.{FileSystem, FileUtil, Path}

val sparkContext //create spark context or obtain from Spark session
val configuration = sparkContext.hadoopConfiguration
val fs = FileSystem.get(new URI(<url to blob storage>), configuration)

fs.listFiles(<pass org.apache.hadoop.fs.Path>, boolean <recursive or not>)

//You can also use
org.apache.hadoop.fs.FileUtil.listFiles(java.io.File)

关于scala - 列出Scala中非默认文件系统上的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60084205/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com