使用python从镶木地板文件中提取列名称和数据类型

问题描述

我有数百个实木复合地板文件,我想将列名和关联的数据类型放入python列表中。我知道我可以获得模式,它以以下格式出现:

COL_1: string
   -- field Metadata --
   PARQUET:field_id: '34'
COL_2: int32
   -- field Metadata --
   PARQUET:field_id: '35'

我只想要:

COL_1 string
COL_2 int32

解决方法

为了从拼花地板转到箭头(反之亦然),在PARQUET键下将一些元数据添加到了模式

您可以轻松删除元数据:

table = pa.Table.from_arrays(
    [pa.array([1,2]),pa.array(['foo','bar'])],schema=pa.schema({'COL1': pa.int32(),'COL2': pa.string()})
)
pq.write_table(table,'/tmp/table.pq')
parquet_file = pq.ParquetFile('/tmp/table.pq')

schema = pa.schema(
    [f.remove_metadata() for f in pqf.schema_arrow])
schema

这将打印:

COL1: int32
COL2: string

请记住,如果您开始编写自己的元数据,则只想删除PARQUET键下的元数据。