2017-08-03 5 views
2

Parkett Dokumentation beschreiben einige verschiedene Kodierungen hereWie Parquet Dateicodierung in Spark-

Ist es ändert sich irgendwie innerhalb Datei während des Lesens setzen/schreiben, oder ich kann es eingestellt? Nichts davon in Spark-Dokumentation. Nur gefunden slides von einer Rede von Ryan Blue vom Netflix-Team. Er setzt Konfigurationen Parkett

sqlContext.setConf("parquet.filter.dictionary.enabled", "true") 

Sieht aus wie es geht nicht um Klar Wörterbuch Codierung in Parkett Dateien SqlContext.

+0

Funken vordefinierten Methoden liefert Dateien lesen/schreiben Parkett wenn das, was Sie suchen . – philantrovert

+0

Wie kann ich die Codierung während des Schreibens einstellen? f. dataFrame.write(). parket () –

Antwort

4

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?

  • Ich habe Parkett-Werkzeuge dafür verwendet.

    -> Gebräu installieren Parkett-Tools (für Mac)
    -> Parkett-Tools meta your_parquet_file .snappy.Parkett

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
-1

Ich bin nicht sicher, ob ich den gesamten Umfang Ihrer Anfrage verstanden habe (und in diesem Fall, bitte zögern Sie nicht zu klären).

Sie können Speicheroptionen für eine hive Tabelle angeben "CREATE TABLE-src (id int) weiter verwenden hive OPTIONS (-Dateiformat 'Parkett')" reference

mit

This one should be easier to follow and more comprehensive

Read/Write-Datei: val usersDF = spark.read.load ("examples/src/main/resources/users.parquet") usersDF.select ("name", "favorite_color"). write.save ("namesAndFavColors.parquet")

Ich gehe auch davon aus, dass Sie bereits überprüft haben: - sqlContext.parquetFile ("File_to_be_read.parquet") - myDataFrame.saveAsParquetFile ("file_to_be_saved.parquet")

+3

OP weiß, wie man Parkett-Dateien erstellt, aber es gibt mehrere mögliche Kodierungen für eine Parkett-Datei in der Spezifikation und möchten wissen, ob dies in Spark konfigurierbar ist. – puhlen

Verwandte Themen