Effizientes Lesen Teil des partitionierten DatensatzesPython

Python-Programme
Anonymous
 Effizientes Lesen Teil des partitionierten Datensatzes

Post by Anonymous »

Ich habe ziemlich große (bis zu ~ 300 GB) Datensätze, die durch Partitionen im Parquetformat gespeichert sind (komprimiert).

Code: Select all

result = ds.dataset(dataset_storage_root, format="parquet", partitioning='hive').scanner(
columns=columns,
filter=filters
).to_table().to_pandas()
< /code>
Obwohl dies funktioniert, ist es ziemlich langsam (ich nehme an, dies ist auf der Tatsache zurückzuführen, dass es tatsächlich den vollständigen Datensatz liest und nur Filter angewendet wird, die über jede Zeile iteriert, und mit ziemlich langsam ~ 13 Sekunden meine, die angesichts der Datensatzgröße, aber die tatsächliche Menge der Daten, die ich für die Daten, die ich für die Daten, die ich für die Daten, zum Abruf, in Ordnung bin, in Ordnung bin. Und das Lesen von nur diesen Teil erfordert ~ 9 ms zum Vergleich. Der Nachteil ist, ich muss manuell Partitionsspalten und -Werte hinzufügen und einige Eckfälle mit Filterung und Schemas verarbeiten.df_pandas = pd.read_parquet(dataset_storage_root, engine="pyarrow", filters=filters)
< /code>
dauert 1M 23s < /p>
df_pq = pq.read_table(dataset_storage_root, filters=filters)
Dauert 1M 22S
Diese dauert wahnsinnig viel Zeit, obwohl der Anspruch nur die durch Filter angegebene Teilmenge lesen sollte.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post