問題
使用AWS服務的代碼段會出現java.lang.IllegalArgumentException:在Databricks Runtime 7.0及以上版本中沒有區域提供錯誤。同樣的代碼可以在Databricks Runtime 6.6及以下版本運行。
您可以通過在筆記本中運行示例代碼片段來驗證該問題。在Databricks Runtime 7.0及以上版本中,它將返回示例錯誤消息中所示的異常。
示例代碼片段(Scala):
import com.amazonaws.regions.Regions import com.amazonaws.services.securitytoken.AWSSecurityTokenServiceClientBuilder import com.amazonaws.services.securitytoken.AWSSecurityTokenServiceClientBuilder .standard() .withRegion(Regions.fromName("us-west-2")) .build()
錯誤信息示例:
java.lang.IllegalArgumentException:任何地區提供com.amazonaws.AmazonWebServiceClient.setRegion (AmazonWebServiceClient.java: 509) com.amazonaws.services.securitytoken.AWSSecurityTokenServiceClient.setRegion (AWSSecurityTokenServiceClient.java: 1436) com.amazonaws.client.builder.AwsClientBuilder.setRegion (AwsClientBuilder.java: 456) com.amazonaws.client.builder.AwsClientBuilder.configureMutableProperties (AwsClientBuilder.java: 424) com.amazonaws.client.builder.AwsSyncClientBuilder.build (AwsSyncClientBuilder.java: 46)
導致
AWS Java SDK版本1.11.655發生了更改,導致Databricks Runtime 7.0及以上版本出現此問題。
解決方案
您必須設置sts_regional_endpoints價值區域集群上。這確保使用了當前配置區域的AWS STS端點。
- 打開集群頁麵。
- 選擇集群。
- 點擊編輯.
- 點擊高級選項.
- 點擊火花.
- 在環境變量字段中,輸入AWS_STS_REGIONAL_ENDPOINTS = "區域".
- 保存更改並啟動或重新啟動集群。