Pyspark.sql.DataFrameReader.csv()
Cette méthode est utilisée pour lire les données du ou des fichiers CSV et les stocker dans le PySpark DataFrame. Il prend les options lors de la lecture de CSV dans le DataFrame. Nous discuterons des différentes options avec des exemples en détail. Lors de la transmission de plusieurs fichiers CSV, il est important de transmettre les noms de fichiers avec extension dans une liste séparée par l'opérateur virgule. Si vous lisez un seul fichier CSV, il n'est pas nécessaire de fournir le nom du fichier dans une liste.
Syntaxe:
Fichier unique - spark_app.read.csv('file.csv', choix …)
Plusieurs fichiers – spark_app.read.csv([‘file1.csv’,’file2.csv’,…],options…)
Il peut également être possible de séparer les options et les noms de fichiers.
Un seul fichier – spark_app.read.options(options…).csv(‘file.csv’)
Plusieurs fichiers – spark_app.read.options(options…).csv([‘file1.csv’,’file2.csv’,…])
Installez la bibliothèque PySpark avant d'implémenter les exemples suivants.
pip installer pyspark
Une fois l'installation réussie, vous pouvez voir la sortie comme suit :
Scénario 1 : Lecture de l'en-tête du fichier CSV
Créons un fichier CSV nommé 'person_skill.csv' avec 5 enregistrements qui est montré dans ce qui suit et chargez-le dans le PySpark DataFrame :
Le paramètre d'en-tête est utilisé pour spécifier les noms de colonne dans le PySpark DataFrame. Il prend une valeur booléenne. S'il est 'True', les noms de colonne réels qui existent dans le fichier CSV sont spécifiés dans le DataFrame, sinon, les c0, c1, c2… sont spécifiés et les noms de colonne réels seront une ligne. Il est préférable de définir le paramètre d'en-tête sur true.
Exemple 1 : En-tête = Vrai
importer pysparkdepuis pyspark.sql importer SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Indice Linux' ).getOrCreate()
# Chargez le csv nommé - person_skill.csv dans les compétences avec des étiquettes de colonne avec en-tête
compétences = linuxhint_spark_app.read.csv( 'person_skill.csv' , entête = Vrai)
# Afficher le DataFrame
compétences.show()
Sortir:
Explication:
Nous pouvons voir que le PySpark DataFrame est créé à partir du fichier CSV avec des colonnes et des lignes spécifiées.
Utilisez la commande suivante pour vérifier les colonnes :
compétences.colonnes
Exemple 2 : En-tête = Faux
importer pysparkdepuis pyspark.sql importer SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Indice Linux' ).getOrCreate()
# Chargez le csv nommé - person_skill.csv dans les compétences avec des étiquettes de colonne sans en-tête
compétences = linuxhint_spark_app.read.csv( 'person_skill.csv' , entête =Faux)
# Afficher le DataFrame
compétences.show()
Sortir:
Explication:
Nous pouvons voir que le PySpark DataFrame est créé à partir du fichier CSV sans colonnes existantes.
De plus, les colonnes existantes sont stockées sous forme de lignes dans le PySpark DataFrame.
compétences.colonnes
Utilisation de Read.options.csv()
Maintenant, nous lisons le fichier CSV en utilisant la méthode read.options.csv(). Ici, nous devons passer les options telles que le délimiteur, l'en-tête, etc. dans les options en tant qu'arguments et nom de fichier dans le csv(). Passons le paramètre d'en-tête en le réglant sur 'True'.
Scénario 1:
importer pysparkdepuis pyspark.sql importer SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Indice Linux' ).getOrCreate()
# Utilisation de read.options.csv()
compétences = linuxhint_spark_app.read. choix ( entête =Vrai).csv( 'person_skill.csv' )
# Afficher le DataFrame
compétences.show()
Sortir:
Scénario 2 : Lecture du délimiteur de fichier CSV
Le paramètre délimiteur prend le caractère qui est utilisé pour séparer chaque champ. Il prend une virgule (,) par défaut. Utilisons le même fichier CSV que celui utilisé dans le premier scénario et passons la virgule (',') comme délimiteur.
importer pysparkdepuis pyspark.sql importer SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Indice Linux' ).getOrCreate()
# Utilisation de read.options.csv() avec délimiteur avec en-tête
compétences = linuxhint_spark_app.read. choix ( entête =Vrai, délimiteur= ',' ).csv( 'person_skill.csv' )
# Afficher le DataFrame
compétences.show()
Sortir:
Lecture de plusieurs fichiers
Jusqu'à présent, nous lisions un seul fichier CSV. Voyons comment lire plusieurs fichiers CSV. Dans ce scénario, les lignes de plusieurs fichiers sont ajoutées dans un seul PySpark DataFrame. Nous avons juste besoin de passer les noms de fichiers dans une liste au sein de la méthode.
Exemple:
Prenons les fichiers CSV suivants nommés 'person_skill.csv' et 'person_skill2.csv' avec les données suivantes :
Lisez ces deux fichiers CSV et stockez-les dans un seul PySpark DataFrame.
importer pysparkdepuis pyspark.sql importer SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Indice Linux' ).getOrCreate()
# Chargez 2 fichiers csv nommés - person_skill.csv et person_skill2.csv dans les compétences avec des étiquettes de colonne avec en-tête
compétences = linuxhint_spark_app.read.csv([ 'person_skill.csv' , 'person_skill2.csv' ], sep= ',' , entête = Vrai)
compétences.show()
Sortir:
Explication:
Le premier CSV contient 6 enregistrements et le second CSV contient 3 enregistrements. Nous pouvons voir que le premier CSV est chargé en premier dans le DataFrame. Ensuite, le deuxième CSV est chargé. Enfin, le PySpark DataFrame contient 9 enregistrements.
Conclusion
La lecture du CSV dans le PySpark DataFrame est assez simple avec la méthode pyspark.sql.DataFrameReader.csv(). Il peut être possible de passer les paramètres d'en-tête et de délimiteur à cette méthode afin de spécifier les colonnes et le format. PySpark prend également en charge la lecture de plusieurs fichiers CSV à la fois avec les méthodes fournies ainsi que leurs options. Dans cet article, nous avons vu les exemples en considérant différentes options. De plus, nous avons vu deux manières de passer les options à la méthode.