通过Scala获取存储在Azure Data Lake中的文件名列表

时间:2018-08-01 08:25:10

标签: scala apache-spark apache-spark-sql azure-data-lake databricks

我需要databricks笔记本上的azure数据湖存储的文件列表。 我有一个scala脚本,但我认为它只能访问本地文件系统中的文件。

val path = "adl://datalakename.azuredatalakestore.net"
import java.io._

def getListOfFiles(dir: String): List[String] = {
   val file = new File(dir)
   file.listFiles.filter(_.isFile)
      .filter(_.getName.endsWith(".dat"))
      .map(_.getPath).toList
}
getListOfFiles(path + "/folder/subfolder/")

但是它无法正常工作,并引发异常错误,例如-java.lang.NullPointerException python / scala中的任何建议或帮助。

1 个答案:

答案 0 :(得分:2)

如果您正在使用Azure Databricks,则可以使用dbutils:

// Access Azure Data Lake Store
spark.conf.set("dfs.adls.oauth2.access.token.provider.type", "ClientCredential")
spark.conf.set("dfs.adls.oauth2.client.id", "xxx)
spark.conf.set("dfs.adls.oauth2.credential", "xxx")
spark.conf.set("dfs.adls.oauth2.refresh.url", "https://login.windows.net/xxx/oauth2/token")

val path="adl://datalakename.azuredatalakestore.net"
val filelist=dbutils.fs.ls(path)
print(filelist)

有关更多信息,请键入:     dbutils.fs.help()