java - 如何从分布式环境访问位于 S3 存储桶中的 DBFS 文件?

标签 java amazon-web-services amazon-s3 databricks

我的文件存储在 prodtest 环境中的 S3 存储桶中。我的代码将在两个环境的分布式系统中执行。我想从 DBFS 访问文件,因为 DBFS 由 S3 支持,并且它的存储桶安装是指向 S3 位置的指针。

如何在不知道代码执行位置(生产或测试)的情况下访问文件? 目前我已成功访问测试环境上的文件,如下所示:

private static final File DATA_FILE = new File("/dbfs/mnt/test-env-bucket/data/test-data.json");

但我需要提供 DBFS 文件的相对路径,例如 /data/test-data.json 并以某种方式检测我们是在 prod 还是 测试 环境并相应地选择存储桶。如果 S3 上的 test-env-bucket 和 prod-env-bucket 中都存在 test-data.json 文件,我该如何实现此目的?

最佳答案

你有两个databricks实例吗?

尝试像这样安装不同的点

产品:

dbutils.fs.mount("s3a://%s:%s@%s" % (ACCESS_KEY, ENCODED_SECRET_KEY, AWS_PRODUCTION_BUCKET_NAME), "/mnt/data")

开发人员:

dbutils.fs.mount("s3a://%s:%s@%s" % (ACCESS_KEY, ENCODED_SECRET_KEY, AWS_DEVELOP_BUCKET_NAME), "/mnt/data")

并且仅使用:

private static final File DATA_FILE = new File("/dbfs/mnt/data/test-data.json");

关于java - 如何从分布式环境访问位于 S3 存储桶中的 DBFS 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54132113/

相关文章:

java - java.lang.String 类型中没有@DynamoDBHashKey 注释的方法或字段

java - 读取 .json 文件 - BOM 问题?

java - 使用 Selenium 生成随机电子邮件

java - 根据 boolean 值 JavaFX 更改标签

ruby - 使用 ruby​​ 在 simple_aws 中使用 get_metric_statistics

amazon-web-services - 如何集成亚马逊 s3 oauth 2.0

java - Java 中 putObject 的 Amazon S3 "NoSuchFieldError: REQUIRES_LENGTH"?

ios - 亚马逊网络服务 S3 超时

javascript - 如何使用 CORS 限制 AWS S3 访问?

java - Eclipse RCP- 仅文件夹的属性页