2015-11-19 30 views
0

我正在运行常规上传作业以将csv上传到BigQuery。这项工作每小时运行一次。根据最近的失败的日志,它说:上传作业在上传成功之前的相同文件上失败

Error: [REASON] invalid [MESSAGE] Invalid argument: service.geotab.com [LOCATION] File: 0/Offset:268436098/Line:218637/Field:2 
Error: [REASON] invalid [MESSAGE] Too many errors encountered. Limit is: 0. [LOCATION] 

我就去排队218638(原CSV有一个标题,所以我想218638应该是实际的失败行,让我知道,如果我错了),但这似乎是好的。我在BigQuery中根据表格检查过,它也有这一行,这意味着我实际上已经成功上传了这一行。

那么为什么最近导致失败呢?

project id: red-road-574 
Job ID: Job_Upload-7EDCB180-2A2E-492B-9143-BEFFB36E5BB5 

回答

0

这表明文件中的数据存在问题,它与模式不匹配。

错误消息说它发生在File: 0/Offset:268436098/Line:218637/Field:2。这意味着第一个文件(它看起来像刚刚有一个文件),然后是从该文件开始的268436098个字节开始的文件块,然后是该文件偏移量的第218637行。

偏移部分的原因是bigquery在多个worker中并行处理大文件。每个文件工作者都从文件开始的偏移处开始。我们所包含的抵消是工人从其开始的抵消。

从错误消息的其余部分看来,字符串service.geotab.com显示在第二个字段中,但第二个字段是数字,而service.geotab.com不是有效数字。也许有一个流浪的换行符?

你可以看到线条看起来像周围的错误做:

cat <yourfile> | tail -c +268436098 | tail -n +218636 | head -3

这将打印出三行......一个错误之前(因为我用-n 218636代替+218637),有错误的那个,还有下一行。

请注意,如果这只是文件中存在问题的一行,则可以通过指定maxBadRecords来解决该问题。

+0

所以218637不是从文件的开始,而是从偏移268436098? – foxwendy

+0

而且,你知道Windows命令行相当于“cat | tail -c +268436098 | tail -n +218636 | head -3”吗? – foxwendy