Big Query 作业失败,并显示“遇到错误字符 (ASCII 0)”。

Joh*_*haw 4 google-bigquery

我的工作因错误而失败

行:14222274 / 字段:1,遇到错误字符 (ASCII 0)。文件的其余部分未处理。

数据已被压缩,并且我已验证文件中不存在 ASCII 0 字符。文件中只有 14222273 行,因此错误消息中打印的行号是文件末尾之后的一行。我有来自同一数据集的其他块,这些块已成功上传,因此我怀疑这要么是 BQ bug,要么错误消息并不表明根本问题。任何解决此问题的帮助将不胜感激。谢谢。

>>> data = open("data.csv").read()
>>> chr(0) in data
False
>>> data[-1]
'\n'
Run Code Online (Sandbox Code Playgroud)

小智 5

我遇到了类似的问题,尝试在 BigQuery 中加载压缩文件(将其保存在 Google Cloud Storage 中)。这些是日志:

文件:0 /偏移量:4563403089 /行:328480 /字段:21:遇到错误字符(ASCII 0):字段开头为:(错误代码:无效)
文件:0 /偏移量:4563403089 /行:328485 /字段:21:遇到错误字符(ASCII 0):字段开头为:(错误代码:无效)
文件:0 /偏移量:4563403089 /行:328490 /字段:21:遇到错误字符(ASCII 0):字段开头为:(错误代码:无效)
文件:0 /偏移量:4563403089 /行:328511 /字段:21:遇到错误字符(ASCII 0):字段开头为:(错误代码:无效)
文件:0 /偏移量:4563403089 /行:328517 /字段:21:遇到错误字符(ASCII 0):字段开头为:(错误代码:无效)

为了解决这个问题,我所做的就是从压缩文件中删除 ASCII 0 字符。为此,我从安装了 sdk 的 Compute Engine 实例执行了以下命令:

gsutil cp gs://bucket_987234/compress_file.gz - | 枪拉链 | tr -d '\000' | gsutil cp - gs://bucket_987234/uncompress_and_clean_file

通过使用管道,我避免了将所有存储都放在硬盘上(1G 压缩 + 52G 解压缩)。第一个程序从存储中获取压缩文件,第二个程序对其进行解压缩,第三个程序删除 ASCII 0 字符,第四个程序将结果上传到存储。

当我再次上传到存储时,我不会压缩结果,因为 BigQuery 加载未压缩文件的速度更快。之后,我可以毫无问题地在 BigQuery 上加载数据。