2016-11-27 83 views
1

我試圖運行存儲在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

我該怎麼做...... –

回答

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