Pyspark.sql.DataFrameReader.csv()
Этот метод используется для чтения данных из файлов CSV и их сохранения в PySpark DataFrame. Он принимает параметры при чтении CSV в DataFrame. Мы подробно обсудим различные варианты с примерами. При передаче более одного CSV-файла важно передавать имена файлов с расширением в виде списка, разделенного запятой. Если вы читаете только один CSV-файл, нет необходимости указывать имя файла в списке.
Синтаксис:
Один файл — spark_app.read.csv(‘file.csv’, параметры …)
Несколько файлов – spark_app.read.csv([‘file1.csv’,’file2.csv’,…],параметры…)
Также можно разделить параметры и имена файлов.
Отдельный файл – spark_app.read.options(опции…).csv(‘file.csv’)
Несколько файлов – spark_app.read.options(options…).csv([‘file1.csv’,’file2.csv’,…])
Установите библиотеку PySpark перед реализацией следующих примеров.
pip установить pyspark
После успешной установки вы можете увидеть следующий вывод:
Сценарий 1: Чтение заголовка CSV-файла
Давайте создадим CSV-файл с именем «person_skill.csv» с 5 записями, как показано ниже, и загрузим его в PySpark DataFrame:
Параметр заголовка используется для указания имен столбцов в PySpark DataFrame. Он принимает логическое значение. Если это «Истина», фактические имена столбцов, которые существуют в файле CSV, указаны в DataFrame. В противном случае указаны c0, c1, c2…, и фактические имена столбцов будут строкой. Лучше всего установить для параметра заголовка значение true.
Пример 1: Заголовок = Истина
импортировать pysparkиз pyspark.sql импортировать SparkSession
linuxhint_spark_app = SparkSession.builder.appName( «Подсказка по Линукс» ).getOrCreate()
# Загружаем CSV-файл с именем - person_skill.csv в скиллы с метками столбцов с заголовком
навыки = linuxhint_spark_app.read.csv( 'person_skill.csv' , заголовок = Верно)
# Отображение фрейма данных
навыки.шоу()
Выход:
Объяснение:
Мы видим, что PySpark DataFrame создается из файла CSV с указанными столбцами и строками.
Используйте следующую команду для проверки столбцов:
навыки.столбцы
Пример 2: Заголовок = False
импортировать pysparkиз pyspark.sql импортировать SparkSession
linuxhint_spark_app = SparkSession.builder.appName( «Подсказка по Линукс» ).getOrCreate()
# Загружаем CSV-файл с именем - person_skill.csv в скиллы с метками столбцов без заголовка
навыки = linuxhint_spark_app.read.csv( 'person_skill.csv' , заголовок = Ложь)
# Отображение фрейма данных
навыки.шоу()
Выход:
Объяснение:
Мы видим, что PySpark DataFrame создается из файла CSV без существующих столбцов.
Кроме того, существующие столбцы хранятся в виде строк в PySpark DataFrame.
навыки.столбцы
Использование Read.options.csv()
Теперь мы читаем файл CSV, используя метод read.options.csv(). Здесь нам нужно передать параметры, такие как разделитель, заголовок и т. Д., В параметрах в качестве аргументов и имени файла в csv(). Давайте передадим параметр заголовка, установив для него значение «True».
Сценарий 1:
импортировать pysparkиз pyspark.sql импортировать SparkSession
linuxhint_spark_app = SparkSession.builder.appName( «Подсказка по Линукс» ).getOrCreate()
# Использование read.options.csv()
навыки = linuxhint_spark_app.read. параметры ( заголовок =Истина).csv( 'person_skill.csv' )
# Отображение фрейма данных
навыки.шоу()
Выход:
Сценарий 2. Чтение разделителя CSV-файла
Параметр разделителя принимает символ, который используется для разделения каждого поля. По умолчанию используется запятая (,). Давайте воспользуемся тем же файлом CSV, что и в первом сценарии, и передадим запятую (‘,’) в качестве разделителя.
импортировать pysparkиз pyspark.sql импортировать SparkSession
linuxhint_spark_app = SparkSession.builder.appName( «Подсказка по Линукс» ).getOrCreate()
# Использование read.options.csv() с разделителем вместе с заголовком
навыки = linuxhint_spark_app.read. параметры ( заголовок =Истина,разделитель= ',' ).csv( 'person_skill.csv' )
# Отображение фрейма данных
навыки.шоу()
Выход:
Чтение нескольких файлов
До сих пор мы читали один файл CSV. Давайте посмотрим, как читать более одного CSV-файла. В этом сценарии строки в нескольких файлах добавляются в один кадр данных PySpark. Нам просто нужно передать имена файлов в списке внутри метода.
Пример:
Пусть у нас есть следующие CSV-файлы с именами «person_skill.csv» и «person_skill2.csv» со следующими данными:
Прочтите эти два файла CSV и сохраните их в одном кадре данных PySpark.
импортировать pysparkиз pyspark.sql импортировать SparkSession
linuxhint_spark_app = SparkSession.builder.appName( «Подсказка по Линукс» ).getOrCreate()
# Загрузить 2 CSV-файла с именами - person_skill.csv и person_skill2.csv в скиллы с метками столбцов с заголовком
навыки = linuxhint_spark_app.read.csv([ 'person_skill.csv' , 'person_skill2.csv' ],сен= ',' , заголовок = Верно)
навыки.шоу()
Выход:
Объяснение:
Первый CSV содержит 6 записей, а второй CSV содержит 3 записи. Мы видим, что первый CSV загружается в DataFrame первым. Затем загружается второй CSV. Наконец, PySpark DataFrame содержит 9 записей.
Заключение
Чтение CSV в PySpark DataFrame довольно просто с помощью метода pyspark.sql.DataFrameReader.csv(). В этот метод можно передать параметры заголовка и разделителя, чтобы указать столбцы и формат. PySpark также поддерживает одновременное чтение нескольких CSV-файлов с помощью предоставленных методов и их параметров. В этой статье мы рассмотрели примеры, рассматривая разные варианты. Кроме того, мы видели два способа передачи опций методу.