Как получить доступ к файлам DBFS, расположенным в корзине S3, из распределенной среды? - PullRequest
0 голосов
/ 10 января 2019

У меня есть файлы, хранящиеся в S3-контейнерах в средах prod и test. Мой код будет выполняться в распределенной системе в обеих средах. И я хочу получить доступ к файлам из 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 или test, и выбрать соответствующий сегмент. Как я могу добиться этого, если файл test-data.json существует как в test-env-bucket, так и в prod-env-bucket на S3?

1 Ответ

0 голосов
/ 10 января 2019

У вас есть два экземпляра базы данных?

Попробуйте смонтировать разные точки, как это

прод:

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

Dev:

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