繁体   English   中英

将S3安装到数据块

[英]mount S3 to databricks

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

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

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

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

从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账户管理员询问。

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

在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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM