Spark读写S3(AWS亚马逊中国区beijing)

Spark读写S3(AWS亚马逊中国区)

因为中国区的region相对于其他国家是隔离的,所以在中国使用亚马逊S3需要单另设置endpoint来指定地区。

首先我们需要引入hadoop-2.7.2的lib中的hadoop-aws-2.7.2.jar,以及aws自己提供的sdk包:aws-java-sdk-1.7.4.jar

使用2.7.2的原因是由于hadoop2.7.2才支持s3。

接下来我们在程序中定义hadoopConfiguration配置option

sc.hadoopConfiguration.set("fs.s3a.access.key", "youraccesskey")
sc.hadoopConfiguration.set("fs.s3a.secret.key", "yoursecretkey")
sc.hadoopConfiguration.set("fs.s3a.endpoint", "s3.cn-north-1.amazonaws.com.cn")
val myRdd = sc.textFile("s3a://your_bucket/")        //read
val myRDD.saveAsTextFile("s3a://your_bucket/test/")  //write
myRdd.count

至于s3和s3n格式的支持暂时还不清楚endpoint如何定义,所以没有使用。如果不定义endpoint,则程序回向美国地区请求access,会出现Error 403找不到key记录的错误。

如果找到正确的定义格式会更新。

转载请注明出处:http://blog.csdn.net/utopia_1919

你可能感兴趣的:(spark)