我了解到,当涉及到大小和查询速度时,Parquet文件格式存储了大量元数据,并使用各种压缩方式以高效的方式存储数据。
它可能会生成多个文件,例如:一个输入,比如Pandas Dataframe 。
现在,我有一个大的CSV文件,我想把它转换成一个parquet文件格式。我会很天真地把文件头去掉(保存在其他地方以备后用),把文件分成n行的块。然后把每个块转换成parquet(这里是Python):
table = pyarrow.csv.read_csv(fileName)
pyarrow.parquet.write_table(table, fileName.replace('csv', 'parquet'))
我想方法并不重要。从我所看到的来看,至少在一个小的测试数据集和没有额外的上下文的情况下,我得到了每个csv文件的一个parquet文件**(1:1)**。
现在,这就是我所需要的,**因为我没有在“整个”逻辑数据集上做查询。我使用原始文件,作为进一步清理步骤的输入,这是一个很好的csv格式。我还没有尝试阅读文件...
我是否必须至少为每个CSV块重新添加标题?
这是不是像我想的那么简单,还是我漏掉了什么?
2条答案
按热度按时间1aaf6o9v1#
创建包含多个文件的 parquet 数据集时,所有文件都应具有匹配的架构。在您的情况下,将csv文件拆分为多个 parquet 文件时,必须在每个块中包含csv标头,才能创建有效的 parquet 文件。
请注意,parquet是一种压缩格式(具有高压缩比)。Parquet数据将比csv数据小得多。在此之上,读取parquet文件的应用程序通常倾向于较少的大型parquet文件,而不是许多小型parquet文件。
iyr7buue2#
写分区的parquet文件的一个简单方法是使用
dask.dataframe
。你甚至可以用dask.dataframe.read_csv
读入数据,然后你不必做任何转换: