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


from_csv

Анализирует столбец, содержащий строку CSV в строку с указанной схемой. Возвращает, null если не удается проанализировать строку.

Синтаксис

from pyspark.sql import functions as sf

sf.from_csv(col, schema, options=None)

Параметры

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

Возвраты

pyspark.sql.Column: столбец проанализированных значений CSV.

Примеры

Пример 1. Анализ простой строки CSV

from pyspark.sql import functions as sf
data = [("1,2,3",)]
df = spark.createDataFrame(data, ("value",))
df.select(sf.from_csv(df.value, "a INT, b INT, c INT")).show()
+---------------+
|from_csv(value)|
+---------------+
|      {1, 2, 3}|
+---------------+

Пример 2. Использование schema_of_csv для вывода схемы

from pyspark.sql import functions as sf
data = [("1,2,3",)]
value = data[0][0]
df.select(sf.from_csv(df.value, sf.schema_of_csv(value))).show()
+---------------+
|from_csv(value)|
+---------------+
|      {1, 2, 3}|
+---------------+

Пример 3. Пропускание пробела в строке CSV

from pyspark.sql import functions as sf
data = [("   abc",)]
df = spark.createDataFrame(data, ("value",))
options = {'ignoreLeadingWhiteSpace': True}
df.select(sf.from_csv(df.value, "s string", options)).show()
+---------------+
|from_csv(value)|
+---------------+
|          {abc}|
+---------------+

Пример 4. Анализ строки CSV с отсутствующим значением

from pyspark.sql import functions as sf
data = [("1,2,",)]
df = spark.createDataFrame(data, ("value",))
df.select(sf.from_csv(df.value, "a INT, b INT, c INT")).show()
+---------------+
|from_csv(value)|
+---------------+
|   {1, 2, NULL}|
+---------------+

Пример 5. Анализ строки CSV с другим разделителем

from pyspark.sql import functions as sf
data = [("1;2;3",)]
df = spark.createDataFrame(data, ("value",))
options = {'delimiter': ';'}
df.select(sf.from_csv(df.value, "a INT, b INT, c INT", options)).show()
+---------------+
|from_csv(value)|
+---------------+
|      {1, 2, 3}|
+---------------+