2015-03-03 13 views
10

Mam dość mocny plik parkietu, w którym muszę zmienić wartości dla jednej z kolumn. Jednym ze sposobów na zrobienie tego byłoby zaktualizowanie tych wartości w źródłowych plikach tekstowych i odtworzenie pliku parkietu, ale zastanawiam się, czy istnieje tańsze i ogólnie łatwiejsze do rozwiązania rozwiązanie.Aktualizowanie wartości w pliku parkietu apache

+1

Nie. Musisz ponownie utworzyć plik. –

+0

@DanOsipov Dzięki. Zakładam, że to ograniczenie wynika z zastosowania różnych algorytmów kompresji, w których nie byłoby łatwo zaktualizować wartości kolumn. –

+0

Powiedziałbym, że jest to o wiele bardziej fundamentalne pytanie, niż pytanie dotyczące parkietu. W świecie dużych ilości danych, w których często używa się parkietu, niezmienność jest czymś, na czym chcielibyście zadbać. Z tej perspektywy chciałbyś załadować dane, przekształcić je, a następnie zapisać ponownie. Można rozważyć tylko zapisanie kolumn, które są potrzebne, co czyni je bardziej wydajnymi, ponieważ jest to format kolumnowy. –

Odpowiedz

2

Zacznijmy od podstaw

  1. parkiet Jeżeli fileformat ale musi być zapisany w systemie.
  2. Czy dołączono obsługę Parquet. ?
  3. Czy plik FileSystem (HDFS) zezwala na dołączanie do pliku.
  4. Nawet jeśli wszystkie są prawdziwe czy ramy pracy (Spark) jest w stanie obsłużyć dołączyć

odpowiada:

  1. parkiet parquet.hadoop.ParquetFileWriter obsługuje tylko tworzyć i nadpisać ale nie append tryb. (Nie jestem pewien, ale może się to zmienić w innej realizacji, projekt parkiet ma wsparcie dopisuje)

  2. HDFS HDFS pozwala na dołączanie plików z użyciem (własność dfs.support.append)

  3. Spark ramy nie obsługuje dołączanie do istniejących pliki parkietowe.

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

Proszę przejść

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

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

w celu uzyskania szczegółowego zrozumienia.

+0

Dzięki za szczegółową odpowiedź i podstawowe informacje. to jest pomocne – Keith

0

Musisz ponownie utworzyć plik, to jest sposób Hadoop. Zwłaszcza jeśli plik jest skompresowany.

Innym podejściem (bardzo powszechnym w dużych danych) jest wykonanie aktualizacji w innym pliku Parkietu (lub ORC), a następnie JOIN/UNION w czasie zapytania.

Powiązane problemy