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

时间:2019-01-10 15:38:58

标签: 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");

但是我需要提供一个指向/data/test-data.json之类的DBFS文件的相对路径,并以某种方式检测我们是否处于prodtest环境中,并相应地选择存储桶。如果test-data.json文件同时存在于S3的test-env-bucket和prod-env-bucket中,该如何实现?

1 个答案:

答案 0 :(得分:1)

您有两个databrick实例吗?

尝试像这样安装不同的点

产品:

<table>    
<td>
    <asp:HyperLink ID="HyperLink1" runat="server" 
    ImageUrl="TrackingPage.aspx">

     <asp:ImageButton ID="ImageButton1" runat="server" CssClass="ImageBtn" 
     ImageUrl="Images/TrackingImg.PNG" OnClientClick="NavigateUrl" />
                                            </asp:HyperLink>

 </td>
      </tr>
      <tr>
 <td>
      <asp:Label ID="DashboardID"  runat="server" CssClass="IDTextStyle" 
      Text='<%#Eval ("ID") %>'></asp:Label>
 </td>
</table>

dev:

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