web-dev-qa-db-fra.com

Comment copier et convertir des fichiers parquet en csv

J'ai accès à un système de fichiers hdfs et je peux voir les fichiers parquet avec

hadoop fs -ls /user/foo

Comment puis-je copier ces fichiers parquet sur mon système local et les convertir en csv afin de pouvoir les utiliser? Les fichiers doivent être de simples fichiers texte avec un certain nombre de champs par ligne.

7
eleanora

Essayer

df = spark.read.parquet("/path/to/infile.parquet")
df.write.csv("/path/to/outfile.csv")

Documentation API pertinente:

Tous les deux /path/to/infile.parquet et /path/to/outfile.csv devrait être des emplacements sur le système de fichiers hdfs. Vous pouvez spécifier hdfs://... explicitement ou vous pouvez l'omettre car il s'agit généralement du schéma par défaut.

Vous devez éviter d'utiliser file://..., car un fichier local signifie un fichier différent pour chaque machine du cluster. Exportez plutôt vers HDFS puis transférez les résultats sur votre disque local à l'aide de la ligne de commande:

hdfs dfs -get /path/to/outfile.csv /path/to/localfile.csv

Ou affichez-le directement depuis HDFS:

hdfs dfs -cat /path/to/outfile.csv
13
Zoltan

Extrait pour une forme plus dynamique, car vous ne savez peut-être pas exactement quel est le nom de votre fichier parquet, sera:

for filename in glob.glob("[location_of_parquet_file]/*.snappy.parquet"):
        print filename
        df = sqlContext.read.parquet(filename)
        df.write.csv("[destination]")
        print "csv generated"
3
Yusuf Hassan

Si une table est définie sur ces fichiers parquet dans Hive (ou si vous définissez une telle table vous-même), vous pouvez exécuter une requête Hive à ce sujet et enregistrer les résultats dans un fichier CSV. Essayez quelque chose comme:

 insérer écraser le répertoire local dirname
 champs délimités au format de ligne se terminant par ',' 
 sélectionnez * dans nom de la table; 

Substitut dirname et tablename avec des valeurs réelles. N'oubliez pas que tout contenu existant dans le répertoire spécifié est supprimé. Voir Écriture de données dans le système de fichiers à partir de requêtes pour plus de détails.

3
Zoltan