【问题标题】:Why can't my GCP script/notebook find my file?为什么我的 GCP 脚本/笔记本找不到我的文件?
【发布时间】:2021-04-30 08:30:22
【问题描述】:

我有一个工作脚本,当它与脚本位于同一目录时,它可以找到数据文件。这适用于我的本地计算机和 Google Colab。

当我在 GCP 上尝试时,虽然它找不到文件。我尝试了 3 种方法:

PySpark 笔记本:

  1. 上传包含 wget 命令的 .ipynb 文件。这会毫无错误地下载文件,但我不确定它将它保存到哪里,并且脚本也找不到该文件(我假设因为我告诉它该文件位于同一目录中,并且可能在 GCP 上使用 wget 将其保存在其他地方默认情况下。)

带存储桶的 PySpark:

  1. 我做了与上面的 PySpark 笔记本相同的操作,但首先我将数据集上传到存储桶,然后在控制台上单击存储桶内的文件名时使用文件详细信息中提供的两个链接(均无效)。我想避免这种情况,因为 wget 比在我的慢速 wifi 上下载然后通过控制台重新上传到存储桶要快得多。

GCP SSH:

  1. 创建集群
  2. 通过 SSH 访问虚拟机。
  3. 使用 cog 图标上传 .py 文件
  4. wget 数据集并将两者移动到同一个文件夹中
  5. 使用python gcp.py运行脚本

只是给我一个错误提示找不到文件。

谢谢。

【问题讨论】:

    标签: google-cloud-platform pyspark


    【解决方案1】:

    根据您的第一种和第三种方法,如果您在 Dataproc 上运行 PySpark 代码,无论您使用的是 .ipynb 文件还是 .py 文件,请注意以下几点:

    如果您使用“wget”命令下载文件,那么它将被下载到执行代码的当前工作目录中。

    当您尝试通过 PySpark 代码访问文件时,它会默认检查 HDFS。如果要从当前工作目录访问下载的文件,请使用带有绝对文件路径的“file:///”URI。

    如果要从 HDFS 访问文件,则必须将下载的文件移动到 HDFS,然后使用绝对 HDFS 文件路径从那里访问。请参考以下示例:

    hadoop fs -put <local file_name> </HDFS/path/to/directory>
    

    【讨论】:

    • 非常感谢。我的 GCP 大学优惠券现已用完,所以我不确定何时会再次使用它来测试您的解决方案,但如果我曾经这样做并且它有效,我会回来并将其标记为已回答。
    猜你喜欢
    • 2019-11-16
    • 1970-01-01
    • 2020-11-01
    • 2021-04-29
    • 2019-03-02
    • 2011-04-18
    • 1970-01-01
    • 2014-12-23
    • 1970-01-01
    相关资源
    最近更新 更多