Поделиться через


to_csv

Преобразует столбец, StructType содержащий строку CSV. Создает исключение в случае неподдерживаемого типа.

Синтаксис

from pyspark.sql import functions as sf

sf.to_csv(col, options=None)

Параметры

Параметр Тип Description
col pyspark.sql.Column или str Имя столбца, содержащего структуру.
options дикт, необязательный Параметры для управления преобразованием. Принимает те же параметры, что и источник данных CSV.

Возвраты

pyspark.sql.Column: строка CSV, преобразованная из заданного.StructType

Примеры

Пример 1. Преобразование простого типа StructType в строку CSV

from pyspark.sql import Row, functions as sf
data = [(1, Row(age=2, name='Alice'))]
df = spark.createDataFrame(data, ("key", "value"))
df.select(sf.to_csv(df.value)).show()
+-------------+
|to_csv(value)|
+-------------+
|      2,Alice|
+-------------+

Пример 2. Преобразование сложного StructType в строку CSV

from pyspark.sql import Row, functions as sf
data = [(1, Row(age=2, name='Alice', scores=[100, 200, 300]))]
df = spark.createDataFrame(data, ("key", "value"))
df.select(sf.to_csv(df.value)).show(truncate=False)
+-------------------------+
|to_csv(value)            |
+-------------------------+
|2,Alice,"[100, 200, 300]"|
+-------------------------+

Пример 3. Преобразование StructType со значениями NULL в строку CSV

from pyspark.sql import Row, functions as sf
from pyspark.sql.types import StructType, StructField, IntegerType, StringType
data = [(1, Row(age=None, name='Alice'))]
schema = StructType([
  StructField("key", IntegerType(), True),
  StructField("value", StructType([
    StructField("age", IntegerType(), True),
    StructField("name", StringType(), True)
  ]), True)
])
df = spark.createDataFrame(data, schema)
df.select(sf.to_csv(df.value)).show()
+-------------+
|to_csv(value)|
+-------------+
|       ,Alice|
+-------------+

Пример 4. Преобразование StructType с различными типами данных в строку CSV

from pyspark.sql import Row, functions as sf
data = [(1, Row(age=2, name='Alice', isStudent=True))]
df = spark.createDataFrame(data, ("key", "value"))
df.select(sf.to_csv(df.value)).show()
+-------------+
|to_csv(value)|
+-------------+
| 2,Alice,true|
+-------------+