hor*_*01d 5 hadoop scala intellij-idea amazon-web-services apache-spark
如果可能,我希望能够在我的spark scala应用程序中使用以不同配置文件维护的〜/ .aws / credentials文件。我知道如何在我的应用程序中为s3a设置hadoop配置,但是我不想继续使用硬编码的其他密钥,而是像在其他程序中一样使用我的凭据文件。我还尝试了使用Java api之类的方法val credentials = new DefaultAWSCredentialsProviderChain().getCredentials(),然后创建了s3客户端,但这不允许我从s3读取文件时使用自己的密钥。我也知道core-site.xml运行应用程序时可以插入密钥,但是我该如何管理不同的密钥以及如何使用IntelliJ进行设置,以便可以使用不同的配置文件插入不同的密钥?
默认情况下,DefaultAWSCredentialsProviderChain 不包含任何提供商。您需要添加一些,例如:
val awsCredentials = new AWSCredentialsProviderChain(new
auth.EnvironmentVariableCredentialsProvider(), new
auth.profile.ProfileCredentialsProvider(), new
auth.AWSCredentialsProvider())
Run Code Online (Sandbox Code Playgroud)
您可以将它们与 S3 客户端一起使用,或者正如您提到的 Spark:
hadoopConfig.set("fs.s3a.access.key", awsCredentials.getAWSAccessKeyId)
hadoopConfig.set("fs.s3a.secret.key", awsCredentials.getAWSSecretKey)
Run Code Online (Sandbox Code Playgroud)
要在不同的 AWS 配置文件之间切换,您可以通过设置 AWS_PROFILE 环境变量在配置文件之间切换。如果需要的话,很乐意对任何特定点进行扩展。
| 归档时间: |
|
| 查看次数: |
1856 次 |
| 最近记录: |