Тема содержания:
- PySpark DataFrame в CSV путем преобразования в Pandas DataFrame
- PySpark Pandas DataFrame в CSV с использованием метода To_Csv()
- PySpark Pandas DataFrame в CSV путем преобразования в массив NumPy
- PySpark DataFrame в CSV с использованием метода Write.Csv()
Если вы хотите узнать об установке PySpark DataFrame и модуля, пройдите этот статья .
PySpark DataFrame в CSV путем преобразования в Pandas DataFrame
to_csv() — это метод, доступный в модуле Pandas, который преобразует DataFrame Pandas в CSV. Во-первых, нам нужно преобразовать наш PySpark DataFrame в Pandas DataFrame. Для этого используется метод toPandas(). Давайте посмотрим на синтаксис to_csv() вместе с его параметрами.
Синтаксис:
pandas_dataframe_obj.to_csv (путь/ 'имя_файла.csv' , заголовок ,индекс,столбцы,режим...)
- Нам нужно указать имя файла CSV-файла. Если вы хотите сохранить загруженный файл CSV в определенном месте на вашем ПК, вы также можете указать путь вместе с именем файла.
- Столбцы включаются, если для заголовка установлено значение «Истина». Если вам не нужны столбцы, установите для заголовка значение «False».
- Индексы указываются, если для индекса установлено значение «Истина». Если вам не нужны индексы, установите для индекса значение «False».
- Параметр Columns принимает список имен столбцов, в котором мы можем указать, какие именно столбцы извлекаются в файл CSV.
- Мы можем добавлять записи в CSV, используя параметр режима. Append – для этого используется «a».
Пример 1: с параметрами заголовка и индекса
Создайте PySpark DataFrame «skills_df» с 3 строками и 4 столбцами. Преобразуйте этот DataFrame в CSV, сначала преобразовав его в Pandas DataFrame.
импортировать pyspark
из pyspark.sql импортировать SparkSession
linuxhint_spark_app = SparkSession.builder.appName( «Подсказка по Линукс» ).getOrCreate()
# данные навыков с 3 строками и 4 столбцами
навыки =[{ 'идентификатор' : 123 , 'человек' : 'Мед' , 'навык' : 'рисование' , 'приз' : 25000 },
{ 'идентификатор' : 112 , 'человек' : 'Муни' , 'навык' : 'танец' , 'приз' : 2000 г. },
{ 'идентификатор' : 153 , 'человек' : 'Туласи' , 'навык' : 'чтение' , 'приз' : 1200 }
]
# создаем кадр данных навыков из приведенных выше данных
skills_df = linuxhint_spark_app.createDataFrame(навыки)
skills_df.show()
# Конвертируем skills_df в pandas DataFrame
pandas_skills_df= skills_df.toPandas()
печать (pandas_skills_df)
# Преобразовать этот DataFrame в csv с заголовком и индексом
pandas_skills_df.to_csv( 'панды_skills1.csv' , заголовок = Истина, индекс = Истина)
Выход:
Мы видим, что PySpark DataFrame преобразуется в Pandas DataFrame. Посмотрим, преобразуется ли он в CSV с именами столбцов и индексами:
Пример 2: добавление данных в CSV
Создайте еще один PySpark DataFrame с 1 записью и добавьте его в CSV, созданный как часть нашего первого примера. Убедитесь, что нам нужно установить для заголовка значение «False» вместе с параметром режима. В противном случае имена столбцов также добавляются в виде строки.
импортировать pysparkиз pyspark.sql импортировать SparkSession
linuxhint_spark_app = SparkSession.builder.appName( «Подсказка по Линукс» ).getOrCreate()
навыки =[{ 'идентификатор' : 90 , 'человек' : 'Бхаргав' , 'навык' : 'чтение' , 'приз' : 12000 }
]
# создаем кадр данных навыков из приведенных выше данных
skills_df = linuxhint_spark_app.createDataFrame(навыки)
# Конвертируем skills_df в pandas DataFrame
pandas_skills_df= skills_df.toPandas()
# Добавьте этот DataFrame в файл pandas_skills1.csv
pandas_skills_df.to_csv( 'панды_skills1.csv' , режим = а , заголовок = Ложь)
Вывод CSV:
Мы видим, что в файл CSV добавлена новая строка.
Пример 3: с параметром Columns
Давайте возьмем тот же DataFrame и конвертируем его в CSV с двумя столбцами: «человек» и «приз».
импортировать pysparkиз pyspark.sql импортировать SparkSession
linuxhint_spark_app = SparkSession.builder.appName( «Подсказка по Линукс» ).getOrCreate()
# данные навыков с 3 строками и 4 столбцами
навыки =[{ 'идентификатор' : 123 , 'человек' : 'Мед' , 'навык' : 'рисование' , 'приз' : 25000 },
{ 'идентификатор' : 112 , 'человек' : 'Муни' , 'навык' : 'танец' , 'приз' : 2000 г. },
{ 'идентификатор' : 153 , 'человек' : 'Туласи' , 'навык' : 'чтение' , 'приз' : 1200 }
]
# создаем кадр данных навыков из приведенных выше данных
skills_df = linuxhint_spark_app.createDataFrame(навыки)
# Конвертируем skills_df в pandas DataFrame
pandas_skills_df= skills_df.toPandas()
# Преобразовать этот DataFrame в csv с определенными столбцами
pandas_skills_df.to_csv( 'панды_skills2.csv' , столбцы=[ 'человек' , 'приз' ])
Вывод CSV:
Мы видим, что в файле CSV существуют только столбцы «человек» и «приз».
PySpark Pandas DataFrame в CSV с использованием метода To_Csv()
to_csv() — это метод, доступный в модуле Pandas, который преобразует DataFrame Pandas в CSV. Во-первых, нам нужно преобразовать наш PySpark DataFrame в Pandas DataFrame. Для этого используется метод toPandas(). Давайте посмотрим на синтаксис to_csv() вместе с его параметрами:
Синтаксис:
pyspark_pandas_dataframe_obj.to_csv (путь/ 'имя_файла.csv' , заголовок ,индекс,столбцы,...)- Нам нужно указать имя файла CSV-файла. Если вы хотите сохранить загруженный файл CSV в определенном месте на вашем ПК, вы также можете указать путь вместе с именем файла.
- Столбцы включаются, если для заголовка установлено значение «Истина». Если вам не нужны столбцы, установите для заголовка значение «False».
- Индексы указываются, если для индекса установлено значение «Истина». Если вам не нужны индексы, установите для индекса значение «False».
- Параметр columns принимает список имен столбцов, в котором мы можем указать, какие именно столбцы извлекаются в CSV-файл.
Пример 1: с параметром Columns
Создайте PySpark Pandas DataFrame с 3 столбцами и преобразуйте его в CSV, используя to_csv() со столбцами «человек» и «приз».
из pyspark импортировать пандыpyspark_pandas_dataframe=pandas.DataFrame({ 'идентификатор' :[ 90 , 78 , 90 , 57 ], 'человек' :[ 'Мед' , 'Муни' , 'сам' , 'радха' ], 'приз' :[ 1 , 2 , 3 , 4 ]})
печать (pyspark_pandas_dataframe)
# Преобразовать этот DataFrame в csv с определенными столбцами
pyspark_pandas_dataframe.to_csv( 'pyspark_pandas1' , столбцы=[ 'человек' , 'приз' ])
Выход:
Мы видим, что PySpark Pandas DataFrame преобразуется в CSV с двумя разделами. Каждый раздел содержит 2 записи. Кроме того, столбцы в CSV содержат только «человек» и «приз».
Файл раздела 1:
Файл раздела 2:
Пример 2: с параметром заголовка
Используйте предыдущий DataFrame и укажите параметр заголовка, установив для него значение «True».
из pyspark импортировать пандыpyspark_pandas_dataframe=pandas.DataFrame({ 'идентификатор' :[ 90 , 78 , 90 , 57 ], 'человек' :[ 'Мед' , 'Муни' , 'сам' , 'радха' ], 'приз' :[ 1 , 2 , 3 , 4 ]})
# Преобразовать этот DataFrame в csv с заголовком.
pyspark_pandas_dataframe.to_csv( 'pyspark_pandas2' , заголовок = Верно)
Вывод CSV:
Мы видим, что PySpark Pandas DataFrame преобразуется в CSV с двумя разделами. Каждый раздел содержит 2 записи с именами столбцов.
Файл раздела 1:
Файл раздела 2:
PySpark Pandas DataFrame в CSV путем преобразования в массив NumPy
У нас есть возможность преобразовать PySpark Pandas DataFrame в CSV путем преобразования в массив Numpy. to_numpy() — это метод, доступный в модуле PySpark Pandas, который преобразует PySpark Pandas DataFrame в массив NumPy.
Синтаксис:
pyspark_pandas_dataframe_obj.to_numpy()Он не будет принимать никаких параметров.
Использование метода Tofile()
После преобразования в массив NumPy мы можем использовать метод tofile() для преобразования NumPy в CSV. Здесь он сохраняет каждую запись в новой ячейке по столбцу в файле CSV.
Синтаксис:
array_obj.to_numpy (имя файла/путь, sep=’ ’)Он принимает имя файла или путь CSV и разделитель.
Пример:
Создайте PySpark Pandas DataFrame с 3 столбцами и 4 записями и преобразуйте его в CSV, предварительно преобразовав в массив NumPy.
из pyspark импортировать пандыpyspark_pandas_dataframe=pandas.DataFrame({ 'идентификатор' :[ 90 , 78 , 90 , 57 ], 'человек' :[ 'Мед' , 'Муни' , 'сам' , 'радха' ], 'приз' :[ 1 , 2 , 3 , 4 ]})
# Преобразование вышеуказанного DataFrame в массив numpy
преобразовано = pyspark_pandas_dataframe.to_numpy()
печать (преобразование)
# Использование tofile()
конвертировано.в файл( 'converted1.csv' , сен = ',' )
Выход:
[[ 90 'Мед' 1 ][ 78 'Муни' 2 ]
[ 90 'сам' 3 ]
[ 57 'радха' 4 ]]
Мы видим, что PySpark Pandas DataFrame преобразуется в массив NumPy (12 значений). Если вы видите данные CSV, они сохраняют каждое значение ячейки в новом столбце.
PySpark DataFrame в CSV с использованием метода Write.Csv()
Метод write.csv() принимает в качестве параметра имя/путь файла, в котором нам нужно сохранить CSV-файл.
Синтаксис:
dataframe_object.coalesce( 1 ).write.csv( 'имя файла' )На самом деле CSV сохраняется как разделы (более одного). Чтобы избавиться от этого, мы объединяем все разделенные файлы CSV в один. В этом сценарии мы используем функциюCoalesce(). Теперь мы можем видеть только один CSV-файл со всеми строками из PySpark DataFrame.
Пример:
Рассмотрим PySpark DataFrame с 4 записями, имеющими 4 столбца. Запишите этот DataFrame в CSV с помощью файла с именем «market_details».
импортировать pysparkиз pyspark.sql импортировать SparkSession
linuxhint_spark_app = SparkSession.builder.appName( «Подсказка по Линукс» ).getOrCreate()
# рыночные данные с 4 строками и 4 столбцами
рынок =[{ 'm_id' : 'мз-001' , 'м_имя' : «Азбука» , 'м_город' : 'Дели' , 'm_state' : 'Дели' },
{ 'm_id' : 'мз-002' , 'м_имя' : 'XYZ' , 'м_город' : патна , 'm_state' : 'Лакхнау' },
{ 'm_id' : 'мз-003' , 'м_имя' : 'PQR' , 'м_город' : 'Флорида' , 'm_state' : 'один' },
{ 'm_id' : 'мз-004' , 'м_имя' : «Азбука» , 'м_город' : 'Дели' , 'm_state' : 'Лакхнау' }
]
# создаем рыночный фрейм данных из приведенных выше данных
market_df = linuxhint_spark_app.createDataFrame(рынок)
# Актуальные рыночные данные
market_df.show()
# запись.csv()
market_df.coalesce( 1 ).write.csv( 'маркет_детали' )
Выход:
Давайте проверим файл:
Откройте последний файл, чтобы увидеть записи.
Заключение
Мы изучили четыре различных сценария преобразования PySpark DataFrame в CSV на примерах с учетом различных параметров. Когда вы работаете с PySpark DataFrame, у вас есть два варианта преобразования этого DataFrame в CSV: один способ — использовать метод write(), а другой — использовать метод to_csv() путем преобразования в Pandas DataFrame. Если вы работаете с PySpark Pandas DataFrame, вы также можете использовать to_csv() и tofile() путем преобразования в массив NumPy.