Spark SQL - différence entre gzip vs snappy vs formats de compression lzo
Je suis en train d'utiliser Spark SQL pour écrire parquet
fichier.
Par défaut Spark SQL prend en charge gzip
, mais il prend également en charge d'autres formats de compression comme snappy
et lzo
.
Quelle est la différence entre ces formats de compression et qui est le mieux pour travailler avec Hive
de chargement.
- Il semble que par défaut de l'Étincelle utilise "snappy" et non pas "gzip". Au moins, c'est ce que je vois sur s3: les fichiers créés avec la chaîne "snappy" dans le cadre de leur nom.
- les versions récentes de spark changé le format par défaut à vif, jusqu'à ce que 1.6.1 je peux voir la valeur par défaut parquet format de compression est gzip.
Vous devez vous connecter pour publier un commentaire.
Viens de les essayer sur vos données.
lzo et la rapidité sont rapides des compresseurs et très rapide des décompresseurs, mais avec moins de compression, par rapport à gzip qui compresse mieux, mais il est un peu plus lent.
Utilisation Snappy si vous pouvez gérer plus de l'utilisation du disque pour l'exécution des prestations (en bas CPU + Splittable).
Lors de l'Allumage de commutation de GZIP pour Snappy par défaut, c'était le raisonnement:
Snappy:
GZIP:
1) http://boristyukin.com/is-snappy-compressed-parquet-file-splittable/
Taux De Compression :
La compression GZIP utilise plus de ressources CPU que Snappy ou LZO, mais fournit un taux de compression élevé.
Utilisation Générale :
GZip est souvent un bon choix pour froid de données, ce qui est rarement consultés.
Snappy ou LZO sont un meilleur choix pour chaud de données, qui est fréquemment consulté.
Snappy souvent plus performant que LZO. Il est important de l'exécution des tests pour voir si vous détecter une différence significative.
Splittablity :
Si vous avez besoin de vos données compressées pour être splittable, BZip2, LZO, et la Rapidité sont les formats splittable, mais GZip n'est pas.
GZIP compresse les données de 30% de plus par rapport à Vif et 2x plus de puissance PROCESSEUR lors de la lecture de données GZIP par rapport à celui qui consomme Snappy données.
LZO l'accent sur la vitesse de décompression à une faible utilisation du CPU et de compression plus élevé, au prix de plus de CPU.
Pour à plus long terme/statique de stockage, la compression GZip est encore mieux.
Je suis d'accord avec 1 réponse(@Mark Adler) et ont une certaine recherche d'infos[1], mais je ne suis pas d'accord avec la deuxième réponse(@Garren S)[2]. Peut-être que Garren mal compris la question, parce que:
[2] le Parquet splitable avec tous les codecs pris en charge:Est format Parquet fichier splittable dans HDFS pour Spark? , Tom White Hadoop: The Definitive Guide, 4-ème édition, Chapitre 5: Hadoop I/O, page 106.
[1] Ma recherche:
source des données - 205 GB. Texte(champs séparés), non-compressé.
données de sortie:
HTML:
Transformation a été réalisée à l'aide de la Ruche sur un système de DME, composé de 2 m4.16xlarge.
Transformation - sélectionner tous les champs avec de la commande par plusieurs champs.
Cette recherche, bien sûr, n'est pas standard, mais au moins un peu montre le véritable comparaison. Avec d'autres ensembles de données et les résultats de calcul peut être différent.