是否可以使用生成器打开parquet文件并逐行迭代?这样可以避免将整个parquet文件加载到内存中。
文件的内容是pandas DataFrame。
由于数据存储方式不同,您无法按行迭代。您可以按以下方式遍历行组:
from fastparquet import ParquetFile
pf = ParquetFile('myfile.parq')
for df in pf.iter_row_groups():
process sub-data-frame df
您可以使用tensorflow_io进行迭代。
import tensorflow_io as tfio
dataset = tfio.IODataset.from_parquet('myfile.parquet')
for line in dataset.take(3):
# print the first 3 lines
print(line)
如果通常情况下,Parquet 存储为一个目录中的多个文件,则可以运行:
for parquet_file in glob.glob(parquet_dir + "/*.parquet"):
df = pd.read.parquet(parquet_file)
for value1, value2, value3 in zip(df['col1'],df['col2'],df['col3']):
# Process row
del df
每次只有一个文件会在内存中。