【问题标题】:Why Transfer in GCP failed on csv file and where is the error log?为什么在 csv 文件上传输 GCP 失败,错误日志在哪里?
【发布时间】:2020-01-01 17:00:55
【问题描述】:

我正在测试 GCP 中的传递函数:

这是csv中的开放数据,https://www.stats.govt.nz/assets/Uploads/Annual-enterprise-survey/Annual-enterprise-survey-2018-financial-year-provisional/Download-data/annual-enterprise-survey-2018-financial-year-provisional-csv.csv

我在 GCP 中的配置:

传输失败如下:

问题一:为什么转账失败?

问题2:错误日志在哪里?

非常感谢。

[更新]:

我检查了日志历史,没有捕获任何内容:

[更新 2]:

错误详情:

详细信息:URL 列表中的第一行必须是 TsvHttpData-1.0 但它是:Year,Industry_aggregation_NZSIOC,Industry_code_NZSIOC,Industry_name_NZSIOC,Units,Variable_code,Variable_name,Variable_category,Value,Industry_code_ANZSIC06

如果您选择第三个选项作为来源,我注意到在传输服务中:它读取 TSV 文件的 URL。本质上,TSV、PSV 只是 CSV 的变体,我可以毫无问题地检索源 csv 文件。错误详细信息似乎暗示了那里没有预料到的事情。

【问题讨论】:

  • GCP 操作检测到的错误会记录到 GCP Stackdriver 日志中。我的建议是查看错误发生时日志查看器中的所有日志,看看我们看到了什么。
  • 谢谢,什么都没有,OP 更新了截图
  • 我不确定您对 Stackdriver 的熟悉程度,但您的屏幕截图显示了一组经过过滤的集合。我会进入高级视图并删除所有过滤器,看看是否有任何显示。

标签: google-cloud-platform google-cloud-storage data-transfer


【解决方案1】:

问题在于,在您的示例中,您将数据文件指向作为传输源。如果我们阅读有关 GCS 传输的文档,我们会发现我们必须指定一个包含我们要复制的目标 URL 的标识的文件。

此文件的格式称为制表符分隔值 (TSV),包含许多参数,包括:

  1. 文件源的 URL。
  2. 源文件的大小(以字节为单位)。
  3. 源文件内容的 MD5 哈希值。

您指定的(只是源文件的 URL)...不是必需的。

一种可能的解决方案是使用 gsutil。它可以选择将流作为输入并将该流写入给定对象。例如:

curl http://[URL]/[PATH] | gsutil cp - gs://[BUCKET]/[OBJECT]

参考资料:

【讨论】:

  • 谢谢。我的评论与您的​​回答重叠。我会再试一次。
  • 嗯,我一点也不明白。根据我需要提供大小和 MD5 哈希的指令,为什么我必须提供这两个作为输入参数? URL 应该是唯一需要检索它的东西。有什么理由需要 size 和 MD5 吗?如何获取源文件的字节大小(本地下载除外),您提供的链接在我看来描述了一个非常繁琐的过程,我对此感到非常惊讶。
  • @mdivk ...我不反对 :-) ...我认为应该有一个选项可以指定源 URL,并且找到的任何内容都会复制/流式传输到目标GCS 对象。然而……我们的现实根本不存在。我们可以做的是向 Google 提出增强请求以添加一些内容。或者,您可以使用 gsutil 命令(例如 stackoverflow.com/questions/18107545/…)将解决方案拼凑在一起
  • 酷,这种解决方法就像一个惊人的技巧,4M 在一个滴答声中完成。谢谢你。请修改您的答案并添加该技巧,我很乐意接受它作为答案。
  • 很高兴为您工作!并感谢您向 Stackoverflow 发布很好的问题!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-11
相关资源
最近更新 更多