我在亞太地區(孟買)地區創建了一個存儲桶,並在新加坡地區創建了另一個存儲桶。我將這些鍵設置爲環境變量。然後在Spark shell中運行以下命令。301嘗試訪問AWS Mumbai S3服務器時重定向
對於新加坡:
sc.hadoopConfiguration.set("fs.s3a.endpoint","s3-ap-southeast-1.amazonaws.com")
val testdf = sqlContext.read.csv("s3a://dev-singapore/test.csv")
它運行得很好。
孟買:
sc.hadoopConfiguration.set("fs.s3a.endpoint","s3.ap-south-1.amazonaws.com")
val testdf = sqlContext.read.csv("s3a://dev-mumbai/test.csv")
但它給了我下面的錯誤
17/05/31 11:56:58 WARN DataSource: Error while looking for metadata directory.
com.amazonaws.services.s3.model.AmazonS3Exception: Status Code: 301, AWS Service: Amazon S3, AWS Request ID: BDFC*****9C820, AWS Error Code: null, AWS Error Message: Moved Permanently
at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:798)
at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:421)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:232)
孟買地區S3服務器只支持簽名版本4,而新加坡支持版本2和4
我使用了Docker鏡像中的Spark(2.0.0)https://hub.docker.com/r/stvdberghe/spark-s3/
但端點是正確的。我更新了aws-java-sdk到1.7.4,現在它給了400.另一個端點和存儲桶工作得很好。 hadoop-aws jar版本爲2.7 –