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

标签 scala hadoop azure-storage-blobs

我需要访问作业中的多个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/

相关文章:

hadoop - 当 hive 由 hbase 支持时,是否支持所有 hive 查询?

scala - 如何在 play 2.1 中处理 JSON 解析中的可选字段

scala - 通过对存储在列表中的字段宽度值进行切片/分割,将 apache-spark 数据帧字符串列拆分为多个列

sql - 如何查询由配置单元中的聚合函数创建的列?

hadoop - 以高吞吐量在 HDFS 上进行流式数据写入

docker - 使用部署为Azure Webapp的单个Docker镜像从Python连接到Blob存储

.net - 如何在 Windows Azure 存储上查询 Cloud Blob

azure - SPARK:在将Azure Blob存储与Spark群集一起使用时,如何访问AzureFileSystemInstrumentation?

scala - 生成类型类实例时无法证明单例类型是单例类型

scala - 在 Scala/Spark 中合并多个连续条目