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



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

如何从不知道执行位置的代码访问文件(生产或测试)?目前,我已经设法访问了测试环境中的文件,如下所示:

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

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

你有两个数据砖实例吗?

尝试像这样安装不同的点

刺:

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

最新更新