Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark AWS EMR-将文件上载到应用程序主机_Apache Spark_Aws Cli_Amazon Emr - Fatal编程技术网

Apache spark AWS EMR-将文件上载到应用程序主机

Apache spark AWS EMR-将文件上载到应用程序主机,apache-spark,aws-cli,amazon-emr,Apache Spark,Aws Cli,Amazon Emr,我正在使用aws cli,并使用以下命令启动群集: aws emr create-cluster --name "Config1" --release-label emr-5.0.0 --applications Name=Spark --use-default-role --ec2-attributes KeyName=ChiaveEMR --log-uri 's3://aws-logs-813591802533-us-west-2/elasticmapreduce/' --instance-

我正在使用aws cli,并使用以下命令启动群集:

aws emr create-cluster --name "Config1" --release-label emr-5.0.0 --applications Name=Spark --use-default-role --ec2-attributes KeyName=ChiaveEMR --log-uri 's3://aws-logs-813591802533-us-west-2/elasticmapreduce/' --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m1.medium InstanceGroupType=CORE,InstanceCount=2,InstanceType=m1.medium
之后,我将一个文件放入主节点:

 aws emr put --cluster-id j-NSGFSP57255P --key-pair-file "ChiaveEMR.pem" --src "./configS3.txt"
该文件位于/home/hadoop/configS3.txt中。 然后我启动一个步骤:

aws emr add-steps --cluster-id ID_CLUSTER --region us-west-2 --steps Type=Spark,Name=SparkSubmit,Args=[--deploy-mode,cluster,--master,yarn,--executor-memory,1G,--class,Traccia2014,s3://tracceale/params/traccia-22-ottobre_2.11-1.0Ale.jar,/home/hadoop/configS3.txt,30,300,2,"s3a://tracceale/Tempi1"],ActionOnFailure=CONTINUE
但我得到了这个错误:

17/02/23 14:49:51 ERROR ApplicationMaster: User class threw exception: java.io.FileNotFoundException: /home/hadoop/configS3.txt (No such file or directory)
java.io.FileNotFoundException: /home/hadoop/configS3.txt (No such file or directory)
可能是因为“configS3.txt”位于主服务器上,而不是从服务器上。 如何将'configS3.txt'传递给spark提交脚本?我也尝试过S3,但不起作用。有什么解决办法吗?由于您使用的是“-deploy mode cluster”,驱动程序在核心/任务实例上运行,而不是在主实例上运行,因此是的,这是因为您将文件上载到主实例,但尝试访问文件的代码没有在主实例上运行


假设您遇到的错误是FileNotFoundException,听起来您的应用程序代码试图直接打开它,这意味着您当然不能直接使用S3路径。(你不能像新建文件(“s3://bucket/key”)那样做,因为Java不知道如何处理这个问题。)但我的假设可能是错误的,因为你没有包括你的应用程序代码,也没有解释你正在使用这个configS3.txt文件做什么。

Maurizio:你仍在尝试修复

在分布式系统上,您需要在所有机器上都可见的文件(s3://文件存储提供的文件),并且需要使用一个API来处理来自分布式文件系统的数据。它
SparkContext.hadoopRDD()
提供。通过尝试解决如何将文件放到每个VM的本地磁盘上,您不会有任何进展,因为这不是您需要解决的问题:而是如何让代码从共享对象存储读取数据


抱歉

我需要从S3或其他文件中读取configS3.txt。我将路径“s3://traccale/params/configS3.txt”传递给函数“fromFile”,如下所示:for(第行)如何使用此函数SparkContext.hadoopRDD()