0

我正在尝试从 Dataproc 集群访问存储在 Google 存储桶中的数据。但是到目前为止,即使我将存储桶文件声明为公开,我的作业也会退出并显示文件不存在的错误。我正在考虑尝试将存储桶安装到集群机器中的文件夹中。为此,我已经在我的初始化脚本中成功安装了 gcsfuse 包,当我 ssh 进入集群时,我能够成功使用 gcsfuse 将文件添加到我的根文件夹。但是,当我退出 ssh 时,我的工作仍然声称本地文件夹不存在。如何解决此问题以从我的 Dataproc 集群访问公共存储分区中的文件?

4

2 回答 2

3

在使用 Spark 或 Hadoop 的 Dataproc 上,访问 GCS 的规范方法是通过 Hadoop 的 GCS 连接器。在 Spark 和 Hadoop 作业中,您应该能够以gs://[bucket]/[some/object/path].

此方法应适用于通过 SparkContext 方法、Hadoop MapReduce FileInputFormat 子类和 Hadoop FileSystem API 读取作业的输入。

于 2018-04-30T20:07:07.840 回答
1

根据我的经验,如果您像这样提交作业,则应该可以在 Dataproc 作业中访问该文件:

gcloud dataproc jobs submit spark \
--cluster cluster_name \
--region europe-west1 \
--class your_java_class \
--jars your_jars \
--files gs://bucket_name/file_name.csv

这样file_name.csv,您的工作中的代码就可以访问“ ”,而您无需做任何额外的事情。然而,我认为这样文件实际上会被物理复制到您的机器上。这对我有用,因为我只需要小文件。如果您想真正将文件保存在您的存储桶中并直接访问它们,那么 Hadoop 方法可能会更好。

我认为从脚本而不是从 UI 控制台中更容易做到这一点,因为我还没有设法通过 UI 控制台让它工作。

于 2018-05-11T15:49:14.403 回答