3

我有一份因错误而失败的工作

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

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

>>> data = open("data.csv").read()
>>> chr(0) in data
False
>>> data[-1]
'\n'
4

3 回答 3

4

我遇到了类似的问题,试图在 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 解压缩)。第一个程序从 Storage 中获取压缩文件,第二个程序将其解压缩,第三个程序删除 ASCII 0 字符,第四个程序将结果上传到 Storage。

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

于 2016-02-09T16:14:25.977 回答
1

当你压缩你使用什么实用程序?

当我以 ZIP 格式(在 Windows 中)压缩我的 csv 文件时,我看到了这个问题。Google BigQuery 似乎只接受 gzip 格式。

确保使用 gzip 压缩 CSV。如果你在 windows 7-zip是一个很棒的实用程序,它允许你在 gzip 中压缩。

在 Unix 中 gzip 是标准的。

于 2012-06-14T23:38:20.617 回答
0

遇到错误字符 (ASCII 0)。其余文件未处理。

清楚地说明您那里有一个无法解码的 UTF-16 字符。BigQuery 服务仅支持 UTF-8 和 latin1 文本编码。因此,该文件应该是 UTF-8 编码的。

文件中只有 14222273 行,因此错误消息中打印的行号是文件末尾之后的一行。

可能您在文件末尾有一个 UTF-16 编码的制表符,无法解码。


解决方案:在命令中使用-aor--ascii标志。gzip它会被解码bigquery

于 2016-09-01T09:49:54.707 回答