So fand ich eine Antwort auf meine Frage auf Twitter Engineering blog.
Parkett hat eine automatische Wörterbuchkodierung aktiviert, wenn eine Anzahl von eindeutigen Werten < 10^5. Here ist ein Postparkett Codierung 1.0 mit Selbstoptimierung Wörterbuch
UPD ankündigt:
Wörterbuch-Codierung umgeschaltet in SparkSession configs werden können:
SparkSession.builder
.appName("name")
.config("parquet.enable.dictionary","false") //true
Bezüglich Codierung durch Spalte gibt eine ist Öffnen Sie issue als Verbesserung in Parquet Jira, die am 14. Juli, 17 erstellt wurde. Da Wörterbuch-Codierung ist eine Standardeinstellung und funktioniert nur für alle Tabelle deaktiviert es Delta-Codierung (Jira issue für diesen Fehler) Dies ist die einzige geeignete Codierung für Daten wie Zeitstempel, bei denen fast jeder Wert eindeutig ist.
UPD2
Wie können wir sagen, welche Codierung für eine Ausgabedatei verwendet wurde?
Ausgang:
.column_1: BINARY SNAPPY DO:0 FPO:16637 SZ:2912/8114/3.01 VC:26320 ENC:RLE,PLAIN_DICTIONARY,BIT_PACKED
.column_2: BINARY SNAPPY DO:0 FPO:25526 SZ:119245/711487/1.32 VC:26900 ENC:PLAIN,RLE,BIT_PACKED
Wo PLAIN und PLAIN_DICTIONARY sind Codierungen, die
für diese Säulen verwendet wurden
Funken vordefinierten Methoden liefert Dateien lesen/schreiben Parkett wenn das, was Sie suchen . – philantrovert
Wie kann ich die Codierung während des Schreibens einstellen? f. dataFrame.write(). parket () –