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

问题描述:

我试图运行存储在AWS S3中的python文件。我使用下面的REST调用:使用Spark通过REST API访问AWS S3上的文件

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值?

请帮忙。

+0

您是否将amazon-sdk添加到master和worker类路径中?或者他们存储在你的超级罐子里面? –

+0

我该怎么做...... –

您将需要CP上的hadoop-aws JAR以及jets3t 0.90 JAR;后者应该被默认包含(hadoop将所有aws的东西移动到一个目前不包含在Spark中的JAR中)。

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

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