【问题标题】:Google Big Query Error: CSV table encountered too many errors, giving up. Row: 1 errors: 1Google Big Query Error: CSV table 遇到太多错误,放弃。行:1 错误:1
【发布时间】:2016-04-13 00:33:57
【问题描述】:

我正在尝试对 Google 大查询中加载的 12 GB csv 文件运行查询,但无法对数据集运行任何查询。我不确定数据集是否正确加载。它在窗格中显示为表格,但不存在于作业历史记录中。任何人都可以提供同样的帮助。

数据集是从谷歌存储桶中加载的,该存储桶有大约 1.2 毫米的记录和 3728 个变量

工作 ID:p-g-us-adv-x-dat-aia-proto-1:bquijob_b951879_1540d02c1a4

【问题讨论】:

  • 代码和错误的图片远没有它们的文本有用。例如,未来的用户无法搜索这些图片,否则他们可能会发现您的问题或答案很有帮助。请edit 附上相关文字,以及可以证明问题的minimal reproducible example

标签: google-bigquery


【解决方案1】:

检查您的架构 - 您可能忘记包含其中一列的架构 - 这就是发生在我身上的事情!

【讨论】:

  • 这就是我的情况,我认为 BQ 应该改进他们的错误信息以提供更多信息
  • 补充您的答案,这也可能发生在数据类型不匹配的情况下。
【解决方案2】:

job.errors 包含作业的详细错误。

这似乎没有记录在任何地方,但您可以在源代码中看到它:https://googlecloudplatform.github.io/google-cloud-python/0.20.0/_modules/google/cloud/bigquery/job.html 和 _AsyncJob 的 ctrl+f。

所以您的 wait_for_job 代码可能如下所示:

def wait_for_job(job):
    while True:
        job.reload()
        if job.state == 'DONE':
            if job.error_result:
                raise RuntimeError(job.errors)
            return
        time.sleep(1)

【讨论】:

  • 非常有帮助。谢谢本!
【解决方案3】:

要获取有关错误的更多信息,请从 CLI 尝试以下操作:

>bq show -j <jobid>

它打印状态和/或详细的错误信息。

列出所有的jobid: bq ls -j

【讨论】:

    【解决方案4】:

    instructions in the GCP docs 之后我遇到了同样的问题。

    第二个 bq load 失败了,但不是第一个。

    我发现在 BigQuery 网络界面中选择 ignore unknown values 选项重复该作业。

    我还没有发现数据有任何错误,但刚刚开始查看它。

    【讨论】:

      【解决方案5】:

      另一个技巧:如果您使用带有标题行的 csv 文件并希望使用定义的模式加载,您需要添加选项--skip_leading_rows=1 来提交命令(例如:bq load --skip_leading_rows=1 --source_format=CSV ...)。

      如果没有此选项,Bigquery 会将您的第一行(标题行)解析为数据行,可能会导致 TYPE MISMATCH ERROR(您定义的列架构是 FLOAT,但其列名是 STRING,bq load 命令将您的列名解析为 FLOAT 值)。

      【讨论】:

        【解决方案6】:

        我也遇到了同样的错误,但不知道实际问题。

        <https://www.googleapis.com/bigquery/v2/projects/****/jobs/job_******?location=******> <{
        reason: invalid message: Error while reading data, error message: JSON table encountered too many errors, giving up. Rows: 115;
        errors: 1. Please look into the errors[] collection for more details.  }
        

        试过 bq --format=prettyjson show -j => 这也没有提供更多线索。

        我尝试使用 SAP BODS 作为 ETL 工具将数据从数据库传输到 Big Query。为了找到根本原因,我必须修改 ETL 以逐列传输,即我首先传输一列,然后添加第二列,依此类推。初始字符串列的传输成功。但是当一个 FLOAT 列出现时,传输给出了同样的错误。

        在检查数据时,我在数据库的小数列中发现值为 .0345。对于小于 1 的值,小数点前的 0 会被删除,这会导致在传输到 Big Query 时出错。

        为了纠正,我不得不申请 BODS 的 to_decimal 转换。

        to_decimal(column_name, '.', ',', 4) 
        

        "," 是千位分隔符

        “。”是小数点分隔符

        4 指定小数点后允许的个数

        注意::我也在同时将记录传输到谷歌云存储,并且在转换之前也成功了。此外,当我手动使用 Cloud Storage 文件填充同一个 BigQuery 表时,它也可以正常工作。

        【讨论】:

          【解决方案7】:

          所以看起来您正在查询一个尚未加载到 BigQuery 中的 CSV 文件,它只是由位于 Google Cloud Storage 中的联合表指向。

          基础 CSV 文件中似乎存在错误:

          Too many value in row starting at position:11398444388 in file:gs://syntheticpopulation-storage/Alldatamerged_Allgrps.csv
          Too many value in row starting at position:9252859186 in file:gs://syntheticpopulation-storage/Alldatamerged_Allgrps.csv
          ...
          

          如果这足以诊断问题,请告诉我。如果您查看查询历史记录,我相信您可以将这些消息视为查询作业的警告。

          我在内部提交了三个错误:

          1. 错误消息中的语法错误。
          2. 由于联合表中的问题导致的错误消息无法诊断,因为它们不会告诉您哪个表有问题。
          3. 联合表中的问题导致的错误消息在 UI 中不可操作,因为有关问题的信息在警告流中,不会显示。

          【讨论】:

          • 嗨乔丹.. 感谢您的回复。如何将此表加载到大查询平台。是否因为大小而没有加载(表已正确存储在存储桶中 - 检查它)。由于我上传了大小为 5GB 的表,并且正确提及了架构结构和数据类型,因此我想不出任何其他原因。你能建议一下吗?
          • 如果尝试加载此 csv 文件的加载作业失败,您能否提供失败的加载作业的作业 ID 和错误消息?
          • 在乔丹的评论中添加了图片/错误(加载错误)
          • 查看文档中的加载数据:cloud.google.com/bigquery/loading-data-into-bigquery
          • @JordanTigani 这个职位在这里有什么帮助?很容易得到一些失败的数据行。非常简单的用例是由于低质量错误消息而获取不必要的数据量。
          【解决方案8】:

          似乎是一个已知的错误@google。已经进行了修复,但没有将其推向生产。 https://code.google.com/p/google-bigquery/issues/detail?id=621

          【讨论】:

            【解决方案9】:

            在使用 beam.io.WriteToBigQuery(...) 将我的元素传递到 Bigquery 之前,我正在通过 beam.Map(print) 传递我的元素。删除它后,我的 BigQuery 上没有加载任何错误和文件。

            【讨论】:

              【解决方案10】:

              问题也可能源于 DATETIME 格式。该列的正确格式是“%Y-%m-%d %H:%M:%S”。除此之外的任何事情都会引发上述错误。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2022-10-21
                • 2017-04-14
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2023-01-21
                • 1970-01-01
                相关资源
                最近更新 更多