【发布时间】:2021-06-19 00:25:57
【问题描述】:
将数据写入镶木地板文件时遇到问题。我尝试了不同的pyarrow 版本(2.0 和 3.0),但结果看起来一样。
我的数据外观示例:
test_data = {
'dogs': [
{'dog': 'frankie'},
{'dog': 'ricky'}
]
}
other_test_data = {
'dogs': [
{'dog': 'rory'},
{'dog': 'marko'}
]
}
然后,我将它们重新格式化为如下所示:
dog_data = {
'dogs': [
[{
'dog': 'frankie'
}, {
'dog': 'ricky'
}],
[{
'dog': 'rory'
}, {
'dog': 'marko'
}]
]
}
我定义了架构:
dog_fields = [
pa.field('dog', pa.string(), nullable=True)
]
dog_schema = pa.schema([
('dogs', pa.list_(pa.struct(dog_fields)))
])
我使用以下方法将它们转换为 pyarrow.Table:
pq_table = pa.Table.from_pydict(mapping=dog_data, schema=dog_schema)
最后,我写入一个文件:
pq.write_table(pq_table, 'dog_data.parquet')
我在文件中看到的是这个,称为list 和item 的附加键:
{
"dogs": {
"list": [{
"item": {
"dog": "frankie"
}
}, {
"item": {
"dog": "ricky"
}
}]
}
}
谁能解释一下为什么将数据字段的类型添加为数据的键?
有办法解决吗?
编辑
这就是我使用list 和item 字段获取数据的方式。
我用brew install parquet-tools安装包,然后运行:
parquet-tools cat --json dog_data.parquet
我选择这样加载文件的原因是我想检查内容是什么。需求来自我在将数据从镶木地板文件加载到 BigQuery 时看到的损坏的架构。 BigQuery 不理解数据的结构,并将架构解释如下:
烦人的.list 和.item 东西都加在那里了。
【问题讨论】:
标签: google-bigquery parquet pyarrow