apache / apache/parquet-java

checkBlockSizeReached zero record size perf issue

Offen
#2,720 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Component: Java Component: Parquet Priority: Minor Type: bug
Vorherrschende Sprache
Java
Sterne
3.1k
Forks
1.6k
Ø Merge
3 T. 12 Std.
Gemergte PRs (30 T.)
33

Beschreibung

Parquet checks Block size after writing records to decide when it shall flush. This is relatively expensive, so it estimates the next check based on record size, record count etc.

For small records (less than 1byte after compression), the average record size is 0 after integer division. This caused overflow when calculating the next record count for block size check, resulting block size being checked for every record.

**Reporter**: [Huicheng Song](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=songhuicheng)

**Note**: *This issue was originally created as [PARQUET-2199](https://issues.apache.org/jira/browse/PARQUET-2199). Please see the [migration documentation](https://issues.apache.org/jira/browse/PARQUET-2502) for further details.*

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Beginne damit, checkBlockSizeReached und die im Issue beschriebene Logik zur Schätzung der Blockgröße nachzuverfolgen. Reproduziere den Fall mit Datensätzen, die kleiner als ein komprimiertes Byte sind, und überprüfe anschließend, dass die Berechnung nicht überläuft und dass Blockgrößenprüfungen nicht für jeden Datensatz durchgeführt werden.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
java
Bereich
data-engineering, performance
Issue-Typ
Bug
Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
45/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.