PySpark Lire CSV()

Pyspark Lire Csv



La construction du PySpark DataFrame à partir des données CSV est possible dans PySpark à l'aide de la fonction read.csv(). Dans certains scénarios, si vous souhaitez charger les données externes dans le PySpark DataFrame, PySpark prend en charge de nombreux formats tels que JSON, CSV, etc. Dans ce didacticiel, nous verrons comment lire les données CSV et les charger dans le PySpark DataFrame. Nous discuterons également du chargement de plusieurs fichiers CSV dans un seul DataFrame à la fois avec des exemples.

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 pyspark

depuis 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 pyspark

depuis 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 pyspark

depuis 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 pyspark

depuis 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 pyspark

depuis 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.