de_csv
Analisa uma coluna contendo strings CSV e a transforma em uma linha com o esquema especificado. Retorna null se as strings não puderem ser analisadas.
Sintaxe
from pyspark.sql import functions as sf
sf.from_csv(col, schema, options=None)
Parâmetros
Parâmetro | Tipo | Descrição |
|---|---|---|
|
| Uma coluna ou nome de coluna em formato CSV. |
|
| Uma coluna, ou strings literais Python com esquema no formato DDL, para usar ao analisar a coluna CSV . |
| dicionário, opcional | Opções para controlar a análise sintática. Aceita as mesmas opções que a fonte de dados CSV. |
Devoluções
pyspark.sql.ColumnUma coluna contendo valores CSV analisados.
Exemplos
Exemplo 1 : Analisando strings CSV simples
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}|
+---------------+
Exemplo 2 : Usando schema_of_csv para inferir o esquema
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}|
+---------------+
Exemplo 3 : Ignorando espaços em branco iniciais em strings 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}|
+---------------+
Exemplo 4 : Analisando strings CSV com um valor ausente
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}|
+---------------+
Exemplo 5 : Analisando strings CSV com um delimitador diferente
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}|
+---------------+