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

时间:2012-06-13 19:02:27

标签: google-bigquery

我的工作失败并出现错误

  

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

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

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

3 个答案:

答案 0 :(得分:2)

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

File: 0 / Offset:4563403089 / Line:328480 / Field:21: Bad character (ASCII 0) encountered: field starts with:  (error code: invalid)
File: 0 / Offset:4563403089 / Line:328485 / Field:21: Bad character (ASCII 0) encountered: field starts with:  (error code: invalid)
File: 0 / Offset:4563403089 / Line:328490 / Field:21: Bad character (ASCII 0) encountered: field starts with:  (error code: invalid)
File: 0 / Offset:4563403089 / Line:328511 / Field:21: Bad character (ASCII 0) encountered: field starts with:  (error code: invalid)
File: 0 / Offset:4563403089 / Line:328517 / Field:21: Bad character (ASCII 0) encountered: field starts with:  (error code: invalid) 

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

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

通过使用管道,我避免了硬盘上的所有存储(1G压缩+ 52G解压缩)。第一个程序从Storage获取压缩文件,第二个程序解压缩它,thrid删除ASCII 0字符,第四个程序将结果更新为存储。

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

答案 1 :(得分:1)

当你压缩你使用的实用程序时?。

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

确保使用gzip压缩CSV。如果你在Windows 7-zip是一个很棒的实用工具,它允许你压缩gzip。

在Unix中,gzip是标准的。

答案 2 :(得分:0)

  

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

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

  

文件中只有14222273行,所以行号是   在错误消息中打印的是超过文件末尾的一行。

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

解决方案:在-a命令中使用--asciigzip标志。它将被bigquery解码为ok。