Evolution du schéma en format parquet
Actuellement nous utilisons Avro format de données en production.
De N les bons points de Avro, nous savons qu'il est bon dans le schéma de l'évolution.
Maintenant, nous sommes à l'évaluation de Parquet format en raison de son efficacité lors de la lecture aléatoire des colonnes.
Donc avant d'avancer à notre préoccupation est l'évolution des schémas!
Personne ne sait si le schéma d'évolution est possible en parquet, si oui Commentsi aucune pourquoi.
Certains présentation dire que c'est possible, mais Pouvez uniquement ajouter des colonnes à la fin
Qu'est-ce que cela signifie?
Grâce,
~Novice Développeur
source d'informationauteur ToBeSparkShark
Vous devez vous connecter pour publier un commentaire.
Schéma de l'évolution peut être (très) cher, parce que pour comprendre le schéma, vous devez tout lire tout le parquet, les fichiers et les reconsile/fusion de ses schémas à lire de temps qui peut être coûteux en fonction du nombre de fichiers /nombre de colonnes dans le jeu de données.
C'est pourquoi, dans l'Étincelle de 1,5, ils ont éteint l'évolution des schémas (par défaut, mais peut être mise sous tension).
http://spark.apache.org/docs/latest/sql-programming-guide.html :
Sans schéma d'évolution, vous pouvez lire le schéma d'un parquet fichier, et pendant la lecture reste des fichiers supposer qu'il reste le même.
Parquet schéma de l'évolution est dépendant de l'implémentation.
Ruche par exemple a un bouton
que vous pourriez à la carte du schéma sont les noms des colonnes plutôt que par un index de colonne.
Ensuite, vous pouvez supprimer les colonnes trop, et pas seulement ajouter.
Comme je l'ai dit, il est dépendant de l'implémentation, par exemple, l'Impala n'aurait pas lu ce parquet, tables correctement (fixe au cours des dernières Impala sortie de la version 2.6):
http://community.cloudera.com/t5/Interactive-Short-cycle-SQL/external-table-stored-as-parquet-can-not-use-field-inside-a/m-p/36012
Étincelle de la version 2.0.2 semble toujours uniquement en charge l'ajout de colonnes:
http://spark.apache.org/docs/latest/sql-programming-guide.html#schema-merging
PS. Ce que j'ai vu des gens faire pour avoir plus d'agilité sur les modifications de schéma, c'est qu'ils créer une vue de dessus de réels parquet tables de la carte de deux (ou plus ) différents mais compatibles schémas à un schéma commun. Disons que vous avez ajouté un nouveau champ (
registration_date
) et a chuté d'une autre colonne (last_login_date
) dans votre nouvelle version, alors ce serait ressembler à:vous eu l'idée.. Belle chose qu'il fonctionne de la même manière sur tous les sql sur Hadoop dialectes (comme je l'ai mentionné ci-dessus Hive, Impala et l'Allumage), et ont encore tous les avantages du Parquet tables (stockage en colonnes, prédicat push-down, etc).