将 S3 安装到数据块

use*_*073 5 scala amazon-s3 amazon-web-services databricks

我正在尝试了解如何mount运作。我有一个名为 的 S3 存储桶myB,其中有一个名为 的文件夹test。我使用了安装

var AwsBucketName = "myB"
val MountName = "myB"
Run Code Online (Sandbox Code Playgroud)

我的问题是:它是否在 S3 和 databricks 之间创建链接myB,并且 databricks 是否会访问所有文件(包括文件test夹下的文件)?(或者如果我使用 var 进行挂载,AwsBucketName = "myB/test"它是否只将 databricks 链接到该文件夹test​​,而不链接到该文件夹​​之外的任何其他文件?)

如果是这样,我该如何说列出test文件夹中的文件、读取该文件或在 scala 中对 csv 文件进行 count() ?我做了一个display(dbutils.fs.ls("/mnt/myB")),它只显示测试文件夹,但不显示其中的文件。这里很新。非常感谢您的帮助!

Sho*_*ack 8

来自 Databricks 文档:

// Replace with your values
val AccessKey = "YOUR_ACCESS_KEY"
// Encode the Secret Key as that can contain "/"
val SecretKey = "YOUR_SECRET_KEY".replace("/", "%2F")
val AwsBucketName = "MY_BUCKET"
val MountName = "MOUNT_NAME"

dbutils.fs.mount(s"s3a://$AccessKey:$SecretKey@$AwsBucketName", s"/mnt/$MountName")
display(dbutils.fs.ls(s"/mnt/$MountName"))
Run Code Online (Sandbox Code Playgroud)

如果您无法看到挂载目录中的文件,则可能是您在 /mnt 下创建的目录不是 s3 存储桶的链接。如果是这种情况,请尝试删除目录 (dbfs.fs.rm) 并使用上述代码示例重新安装。请注意,您将需要 AWS 凭证(上面的 AccessKey 和 SecretKey)。如果您不知道它们,则需要向您的 AWS 账户管理员询问。