2015-03-03 10 views
10

Ho un file di parquet piuttosto pesante in cui è necessario modificare i valori per una colonna. Un modo per farlo sarebbe quello di aggiornare quei valori nei file di testo sorgente e ricreare il file parquet, ma mi chiedo se ci sia una soluzione meno costosa e più semplice a questo.Aggiornamento dei valori nel file di file apache

+1

No. È necessario ricreare il file. –

+0

@DanOsipov Grazie. Presumo che questa limitazione sia dovuta a vari algoritmi di compressione usati dove non sarebbe facile o addirittura possibile aggiornare i valori delle colonne. –

+0

Direi, questa è una domanda molto più fondamentale, piuttosto che una domanda specifica per il parquet. Nel mondo degli alti volumi di dati, dove il parquet è molto usato, l'immutabilità è qualcosa che ti interessa. Da questa prospettiva vorrai caricare i dati, trasformarli e poi riscriverli. Potresti considerare di scrivere solo le colonne di cui hai bisogno, il che lo rende più efficiente poiché è un formato a colonne. –

risposta

2

Consente di iniziare con basi

  1. parquet se un fileFormat, ma ha bisogno di essere salvati in un file system.
  2. Il Parquet supporta l'accodamento. ?
  3. Fa FileSystem (HDFS) consentire Aggiungi sul file.
  4. Anche se tutti sono vere fa il quadro del lavoro (Spark) è in grado di gestire accodare

Risposte:

  1. parquet: parquet.hadoop.ParquetFileWriter supporta solo creare e sovrascrivere ma non accodamento modalità. (Non sono sicuro, ma questo può cambiare in altre implementazioni, il design in legno non supporto accoda)

  2. HDFS HDFS permette accodare il file utilizzando (proprietà dfs.support.append)

  3. quadro Spark non supporta accoda agli attuali file di parquet.

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

prega di passare attraverso

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

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

per una comprensione dettagliata.

+0

Grazie per la risposta dettagliata e informazioni di base. questo è utile – Keith

0

È necessario ricreare il file, questo è il modo Hadoop. Soprattutto se il file è compresso.

Un altro approccio, (molto comune nei Big-data), consiste nell'effettuare l'aggiornamento su un altro file Parquet (o ORC), quindi JOIN/UNION al momento della query.