将包含 CSV 字符串的列分析为具有指定架构的行。 如果无法分析字符串,则返回 null 。
Syntax
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 |
分析 CSV 列时要使用的列或具有 DDL 格式架构的 Python 字符串文本。 |
options |
dict,可选 | 用于控制分析的选项。 接受与 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}|
+---------------+