Effizientes Lesen Teil des partitionierten Datensatzes

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Effizientes Lesen Teil des partitionierten Datensatzes

by Anonymous » 17 Mar 2025, 14:36

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.

Top