【发布时间】:2021-01-13 03:28:46
【问题描述】:
我跟随pyarrow data types for columns that have lists of dictionaries? 创建了一个箭头表,其中包含一列 MapType。
import pandas as pd
import pyarrow as pa
import pyarrow.parquet as pq
print(f'PyArrow Version = {pa.__version__}')
print(f'Pandas Version = {pd.__version__}')
df = pd.DataFrame({
'col1': pd.Series([
[('id', 'something'), ('value2', 'else')],
[('id', 'something2'), ('value','else2')],
]),
'col2': pd.Series(['foo', 'bar'])
}
)
udt = pa.map_(pa.string(), pa.string())
schema = pa.schema([pa.field('col1', udt), pa.field('col2', pa.string())])
table = pa.Table.from_pandas(df, schema)
pq.write_table(table, './test_map.parquet')
以上代码在我的开发电脑上运行流畅:
PyArrow Version = 1.0.1
Pandas Version = 1.1.2
并成功生成了test_map.parquet文件。
然后我使用 parquet-tools (1.11.1) 读取文件,但得到以下输出:
col1:
.key_value:
.key_value:
col2 = foo
col1:
.key_value:
.key_value:
col2 = bar
缺少键和值... 你能帮我解决这个问题吗?
【问题讨论】:
-
您能否确认您使用的是哪个版本的
parquet-tools?我找不到 1.11.1 -
我从 Maven Central 下载了 parquet-tools 1.11.1(parquet.apache.org/downloads 上有一个链接)。请注意,它需要 Hadoop 集群才能运行。