5

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

var AwsBucketName = "myB"
val MountName = "myB"

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

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

4

2 回答 2

7

从 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"))

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

于 2017-11-08T01:47:34.117 回答
0

它仅列出存储桶下的文件夹和文件。

在 S3 中

<bucket-name>/<Files & Folders>

在 Databricks 中

/mnt/<MOUNT-NAME>/<Bucket-Data-List>

就像下面一样(输出dbutils.fs.ls(s"/mnt/$MountName")

dbfs:/mnt/<MOUNT-NAME>/Folder/  
dbfs:/mnt/<MOUNT-NAME>/file1.csv
dbfs:/mnt/<MOUNT-NAME>/file2.csv
于 2019-03-10T21:29:14.610 回答