通过REST API使用spark访问AWS S3上的文件

时间:2016-11-27 12:44:00

标签: rest amazon-web-services apache-spark amazon-s3 pyspark

我正在尝试运行存储在AWS S3中的python文件。我正在使用以下REST调用:

curl -X POST http://localhost:6066/v1/submissions/create --header "Content-Type:application/json;charset=UTF-8" --data '{
"action" : "CreateSubmissionRequest",
"appArgs" : [ "s3n://<bucket-Name>/pi.py" ],
"appResource" : "s3n://<bucket-Name>/pi.py",
"clientSparkVersion" : "1.6.1",
"environmentVariables" : {
    "SPARK_ENV_LOADED" : "1"
},
"mainClass" : "org.apache.spark.deploy.SparkSubmit",
"sparkProperties" : {
"spark.driver.supervise" : "false",
"spark.app.name" : "Simple App",
"spark.eventLog.enabled": "true",
"spark.submit.deployMode" : "cluster",
"spark.master" : "spark://localhost:6066"
}
}'

但我收到错误:

java.io.IOException: No FileSystem for scheme: s3n

我尝试了同样的调用,除了文件在我的本地机器上并且它有效。如何在REST调用中设置fs.s3n.impl,fs.s3n.awsAccessKeyId和fs.s3n.awsSecretAccessKey值?

请帮忙。

1 个答案:

答案 0 :(得分:0)

你的CP上需要hadoop-aws JAR,以及jets3t 0.90 JAR;默认情况下应该包含后者(hadoop将所有aws内容移动到当前未包含在Spark中的JAR中,参见)。

如果您使用的是Hadoop 2.7+,我建议您升级到使用s3a网址,这是较新的客户端;它需要相同的JAR以及Yuval提到的AWS SDK。

请参阅:http://www.slideshare.net/steve_l/hadoop-hive-spark-and-object-stores