2015-03-03 6 views
10

Ich habe eine ziemlich kräftige Parkett-Datei, wo ich Werte für eine der Spalte ändern muss. Eine Möglichkeit wäre, diese Werte in den Quelltextdateien zu aktualisieren und die Parkettdatei neu zu erstellen, aber ich frage mich, ob es eine kostengünstigere und insgesamt einfachere Lösung dafür gibt.Aktualisieren von Werten in Apache-Parkett-Datei

+1

Nein. Sie müssen die Datei neu erstellen. –

+0

@DanOsipov Danke. Ich nehme an, dass diese Einschränkung auf verschiedene Komprimierungsalgorithmen zurückzuführen ist, bei denen es nicht einfach oder sogar möglich wäre, Spaltenwerte zu aktualisieren. –

+0

Ich würde sagen, das ist eine viel fundamentalere Frage, und nicht eine Parkett-spezifische Frage. In der Welt der hohen Datenmengen, wo Parkett oft verwendet wird, ist Unveränderlichkeit etwas, um das Sie sich kümmern möchten. Aus dieser Perspektive möchten Sie die Daten laden, transformieren und dann erneut schreiben. Sie sollten nur die Spalten schreiben, die Sie benötigen, was es effizienter macht, da es sich um ein spaltenweises Format handelt. –

Antwort

2

Fangen wir mit den Wurzeln

  1. Parkett, wenn ein Start-Dateiformat, sondern muss in einem Dateisystem gespeichert werden.
  2. Unterstützt Parquet-Unterstützung. ?
  3. Ermöglicht das FileSystem (HDFS) Anhängen an die Datei.
  4. Selbst wenn alle wahr sind macht den Job Rahmen (Funken) in der Lage ist

Antworten zu handhaben anhängen:

  1. Parkett: parquet.hadoop.ParquetFileWriter unterstützt nur CREATE und ERSETZEN aber keine append Modus. (Nicht sicher, aber in anderen Implementierung ändern können, Parkett Design nicht anhängt Unterstützung)

  2. HDFS hdfs können auf Dateien anhängen mit (dfs.support.append Eigenschaft)

  3. Spark-Framework unterstützt nicht anhängen an bestehende Parkett-Dateien.

    https://issues.apache.org/jira/browse/SPARK-18199

Bitte gehen Sie durch

http://bytepadding.com/big-data/spark/read-write-parquet-files-using-spark/

http://bytepadding.com/linux/understanding-basics-of-filesystem/

für ein detailliertes Verständnis.

+0

Danke für die detaillierte Antwort und Hintergrundinformationen. das ist hilfreich – Keith

0

Sie müssen die Datei neu erstellen, das ist die Hadoop-Methode. Vor allem, wenn die Datei komprimiert ist.

Ein anderer Ansatz (sehr häufig in Big-data) besteht darin, das Update auf einer anderen Parquet (oder ORC) -Datei durchzuführen und dann JOIN/UNION zur Abfragezeit.

Verwandte Themen