加载嵌套重复RECORD数据至BigQuery时遇ArrowTypeError问题求助
问题原因分析
你遇到的ArrowTypeError本质是数据类型不匹配:
- BigQuery中
REPEATED RECORD类型对应的Python数据结构是嵌套字典组成的列表(比如[{"key1": val1}, {"key2": val2}]),需要的是可被Arrow识别的结构化数据。 - 你把
customTitles转成JSON字符串后,该字段变成了单一的字符串类型(比如"[{\"key1\": val1}, {\"key2\": val2}]"),Arrow加载时会尝试将这个字符串解析为BigQuery的重复记录,但字符串的起始字符[不符合它期待的键值对元组格式,因此抛出错误。
解决方案
直接用结构化数据而非JSON字符串存入DataFrame,两种场景的处理方式:
场景1:直接从API响应提取数据
不要对customTitles做JSON序列化,直接保留原始的嵌套列表结构:
import pandas as pd # 假设api_response是API返回的JSON数组 processed_data = [] for item in api_response: processed_row = { # 提取4个普通字段 "field1": item["field1"], "field2": item["field2"], "field3": item["field3"], "field4": item["field4"], # 直接保留customTitles的原始嵌套列表 "customTitles": item["customTitles"] } processed_data.append(processed_row) df = pd.DataFrame(processed_data) # 此时df['customTitles']的类型是list,可直接加载到BigQuery
场景2:已将customTitles转为JSON字符串
需要先将JSON字符串解析回Python的嵌套列表结构:
import pandas as pd import json # 假设df是已包含JSON字符串格式customTitles的DataFrame df["customTitles"] = df["customTitles"].apply(json.loads) # 解析后字段恢复为嵌套列表,可正常加载到BigQuery
内容的提问来源于stack exchange,提问作者Amar Kumar
相关产品推荐
相关产品推荐

