Java 使用Google Storage Bucket的输入运行Spark作业时未找到文件

Java 使用Google Storage Bucket的输入运行Spark作业时未找到文件,java,apache-spark,google-cloud-platform,google-cloud-dataproc,Java,Apache Spark,Google Cloud Platform,Google Cloud Dataproc,我正在GoogleCloudDataProc集群上运行一个作业,它接受一个参数——输入文件的路径。此文件存储在Google云存储桶中。我得到一个FileNotFoundException(跟踪如下)。为什么会这样 gcloud dataproc jobs submit spark --cluster cluster-1 --class MST.ComputeMST \ --jars gs://dataproc-211700eb-83ed-456d-a67e-98af9e6fa02d-us

我正在GoogleCloudDataProc集群上运行一个作业,它接受一个参数——输入文件的路径。此文件存储在Google云存储桶中。我得到一个FileNotFoundException(跟踪如下)。为什么会这样

gcloud dataproc jobs submit spark --cluster cluster-1 --class MST.ComputeMST \
    --jars gs://dataproc-211700eb-83ed-456d-a67e-98af9e6fa02d-us/ComputeMST.jar \
    -- gs:///dataproc-211700eb-83ed-456d-a67e-98af9e6fa02d-us/input.txt

Job [8b193fcd-1350-462b-ae11-373333e868fe] submitted.
Waiting for job output...
17/05/16 05:06:02 INFO com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystemBase: GHFS version: 1.6.1-hadoop2
number of runs = 0
Exception in thread "main" java.io.FileNotFoundException: gs:/dataproc-211700eb-83ed-456d-a67e-98af9e6fa02d-us/input.txt (No such file or directory)
  at java.io.FileInputStream.open0(Native Method)
  at java.io.FileInputStream.open(FileInputStream.java:195)
  at java.io.FileInputStream.<init>(FileInputStream.java:138)
  at java.io.FileInputStream.<init>(FileInputStream.java:93)
  at java.io.FileReader.<init>(FileReader.java:58)
  at MST.ComputeMST.main(ComputeMST.java:670)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.lang.reflect.Method.invoke(Method.java:498)
  at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:736)
  at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:185)
  at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:210)
  at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:124)
  at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
ERROR: (gcloud.dataproc.jobs.submit.spark) Job [8b193fcd-1350-462b-ae11-373333e868fe] entered state [ERROR] while waiting for [DONE].
gcloud dataproc jobs submit spark--cluster cluster-1--class MST.ComputeMST\
--jars gs://dataproc-211700eb-83ed-456d-a67e-98af9e6fa02d-us/ComputeMST.jar\
--gs:///dataproc-211700eb-83ed-456d-a67e-98af9e6fa02d-us/input.txt
作业[8b193fcd-1350-462b-ae11-373333e868fe]已提交。
正在等待作业输出。。。
17/05/16 05:06:02 INFO com.google.cloud.hadoop.fs.gcs.GoogleHadoop文件系统数据库:GHFS版本:1.6.1-hadoop2
运行次数=0
线程“main”java.io.FileNotFoundException:gs:/dataproc-211700eb-83ed-456d-a67e-98af9e6fa02d-us/input.txt中出现异常(无此类文件或目录)
位于java.io.FileInputStream.open0(本机方法)
在java.io.FileInputStream.open(FileInputStream.java:195)
位于java.io.FileInputStream。(FileInputStream.java:138)
位于java.io.FileInputStream。(FileInputStream.java:93)
位于java.io.FileReader。(FileReader.java:58)
在MST.ComputeMST.main(ComputeMST.java:670)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:498)
位于org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:736)
位于org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:185)
位于org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:210)
位于org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:124)
位于org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
错误:(gcloud.dataproc.jobs.submit.spark)作业[8b193fcd-1350-462b-ae11-373333e868fe]在等待[DONE]时进入状态[ERROR]。

即使默认情况下在Cloud Dataproc群集上安装了GCS连接器,您也不能通过
java.io.FileReader
接口从作业中使用它


要通过GCS连接器访问GCS对象,您需要访问Hadoop的
文件系统
界面。

我在这里使用gs:///而我也尝试过gs://。根据此文档,Google Cloud Dataproc默认安装了Google Storage connector:您可以尝试使用
--files
将文件复制到工作目录吗在所有遗嘱执行人中?谢谢,就是这样!