2016-03-04 21 views
5

Próbuję użyć Spark SQL do napisania pliku parquet.Spark SQL - różnica między formatami kompresji gzip vs snappy vs lzo

Domyślnie Spark SQL obsługuje gzip, ale obsługuje również inne formaty kompresji, takie jak snappy i lzo.

Jaka jest różnica między tymi formatami kompresji i która z nich najlepiej jest pracować z ładowaniem Hive.

+2

Wydaje się, że domyślnie używa Spark "żwawy", a nie "gzip". Przynajmniej to widzę na s3: pliki utworzone za pomocą łańcucha "snappy" jako część ich nazwy. – bashan

+0

@bashan: ostatnie wersje iskry zmieniły domyślny format na snappy, do 1.6.1 widzę domyślny format kompresji parkietowej to gzip. – Shankar

Odpowiedz

10

Po prostu wypróbuj je na swoich danych.

Lzo i Snappy to szybkie kompresory i bardzo szybkie dekompresory, ale z mniejszą kompresją, w porównaniu z gzipem, który kompresuje się lepiej, ale jest nieco wolniejszy.

5

Używaj Snappy, jeśli potrafisz wykorzystać większe użycie dysku, aby uzyskać korzyści związane z wydajnością (niższy CPU + Splittable).

Kiedy Spark przełączane z GZIP do sztuczki domyślnie jest to rozumowanie:

Na podstawie naszych badań, gzip dekompresji jest bardzo powolna (< 100MB/s), podejmowania zapytań dekompresja związana. Snappy może rozpakować na poziomie ~ 500MB/s na jednym rdzeniu.

Snappy:

  • Schowek: Wysoka
  • CPU Usage: Niski
  • rozszczepialnego: Tak (1)

GZIP:

  • Schowek: Średni
  • CPU Usage: Średni
  • rozszczepialnego: nr

1) http://boristyukin.com/is-snappy-compressed-parquet-file-splittable/