J'ai une énorme quantité de JSON
fichiers que j'ai besoin de transformer en Parquet
. Ils ressemblent à ceci:Transformer JSON en Parquet en utilisant EMR/Spark
{
"foo": "bar",
"props": {
"prop1": "val1",
"prop2": "val2"
}
}
Et je besoin de les transformer en un fichier Parquet
dont la structure est ce (propriétés imbriquées sont faites de haut niveau et d'obtenir _
comme suffixe):
foo=bar
_prop1=val1
_prop2=val2
Maintenant, voici la capture: tous les documents JSON
n'ont pas les mêmes propriétés. Ainsi, si doc1 a prop1
et prop2
, mais que doc2 a prop3
, le fichier final Parquet
doit avoir les trois propriétés (certaines d'entre elles seront nulles pour certains des enregistrements).
Je comprends que Parquet
a besoin d'un schema
avant, donc mon plan actuel est:
- Traverse tous Les fichiers
JSON
- INFER un
schema
par document (en utilisant Cerf-volant, like this) - fusionner tous le
schemas
- Commencer à écrire le
Parquet
Cette approche me semble très compliquée, lente et sujette aux erreurs. Je me demande s'il y a une meilleure façon d'y parvenir en utilisant Spark
.