json - 如何从字节偏移中读取 gzip jsonl 以调试 BigQuery 错误?
问题描述
我正在将 json 换行文件导出到 BigQuery 中,BigQuery 错误给了我原始 gziped jsonl 文件的字节偏移量,例如
JSON parsing error in row starting at position 727720: Repeated field must be imported as a JSON array. Field: named_entities.alt_form."
我曾尝试使用 Python 包索引 gzip从偏移量中读取,但索引 gzip 可悲地破坏了这些行。我还尝试使用内置的 python gzip 包来尝试获取相关行,但未成功:
import gzip
import ujson as json
f = open('myfile.json.gz', 'rb')
g = gzip.GzipFile(fileobj=f)
fasz = g.read()
byte_offset_to_line = {}
for line in g:
byte_offset = f.tell()
byte_offset_to_line[byte_offset] = line
target = 727720
ls = sorted([(abs(target-k),k) for k in byte_offset_to_line.keys() if k < target])
line_of_interest = byte_offset_to_line[ls[0]]
text = str(line_of_interest)
malformed_json = json.loads(text[2:-3])
通过上面的代码片段,我可以获得最近行的字节偏移量。但是当我尝试将该行上传到 BQ 的测试表时,它的工作很糟糕,所以我认为我没有得到正确的行。
我想知道是否有更好的方法来解决这个问题?老实说,我不确定为什么我上面的代码片段不起作用。
解决方案
推荐阅读
- python - 使用python函数式编程将csv文件导入sqllite3
- python - 下面的 C 语句是什么意思?((int*) & var)
- python - Pyspark 读取带有模式的 csv、标头检查并存储损坏的记录
- python - 尽管进程已死,为什么我会收到子进程资源警告?
- python - Pandas 中的高级数据透视表
- ios - 如何将我的项目从使用 Storyboard 转变为不再使用 Storyboard?
- javascript - 限制安卓设备的字段输入
- vue.js - 在Vue router-link中使用Object作为参数的路径问题
- windows - 绑定地址失败 http://127.0.0.1:59074: 地址已在使用中
- domain-driven-design - 域模型中的 ID,以防自然 ID 不可用