我有類似的問題,試圖在BigQuery中加載一個壓縮文件(將其保存在Google Cloud Storage中)。這些是日誌:
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字符。要做到這一點,我執行以下commnad從計算引擎的實例與安裝SDK:
gsutil cp gs://bucket_987234/compress_file.gz - | gunzip | tr -d '\000' | gsutil cp - gs://bucket_987234/uncompress_and_clean_file
通過使用管道,我避免有硬盤(1G壓縮+ 52G解凍)上的所有存儲。第一個程序從存儲獲取壓縮文件,第二個程序解壓縮它,第三個程序刪除ASCII 0字符,第四個程序將結果更新到存儲。
當我再次上傳到存儲時,我不會壓縮結果,因爲BigQuery會更快地加載未壓縮的文件。之後,我可以毫無問題地加載BigQuery數據。
嗨,John:你能否確認未壓縮的文件沒有結尾的'\ 0'字符? –
@MichaelManoochehri 該文件的最後一個字節是換行符。 (0)in open(「data.csv」)。read() False' –
在沒有實際數據的情況下調試它幾乎是不可能的。您可以將原始問題文件解壓縮,將其分成2個文件,重新gzip並重新獲取到BigQuery中?或者,您是否可以用原始文件的最後兩行創建一個新文件,嘗試重新攝取,並讓我們知道您是否得到相同的錯誤? –