跳到主要内容

from_csv:CSV 字符串解析

速查结论

from_csv(csvStr, schema[, options]) 是 Spark SQL 中用于将 CSV 字符串解析为结构体的函数。需要指定目标 schema(DDL 字符串或 STRUCT 类型),可选 options 控制分隔符、日期格式等解析行为。

语法

from_csv(csvStr, schema[, options])

参数说明

参数说明
csvStr待解析的 CSV 格式字符串
schema目标 schema,DDL 字符串格式(如 'a INT, b DOUBLE'
options可选,解析选项的 Map(如 map('timestampFormat', 'dd/MM/yyyy')

返回值:按 schema 解析出的结构体。

Since: 3.0.0

示例

基础解析

-- DDL 字符串指定 schema
SELECT from_csv('1, 0.8', 'a INT, b DOUBLE');
-- 结果: {"a":1,"b":0.8}

带 options 解析

-- 指定日期格式
SELECT from_csv('26/08/2015', 'time Timestamp', map('timestampFormat', 'dd/MM/yyyy'));
-- 结果: {"time":2015-08-26 00:00:00}

常见报错与避坑指南

列数与 schema 不匹配

CSV 列数必须与 schema 定义的字段数一致,否则解析失败。

-- 错误写法:3个字段但 CSV 只有2列
SELECT from_csv('1, 0.8', 'a INT, b DOUBLE, c STRING');
-- 返回 NULL 或报错

-- 正确写法:列数与 schema 匹配
SELECT from_csv('1, 0.8', 'a INT, b DOUBLE');

类型不兼容

CSV 中的值必须能转换为 schema 中指定的类型。

-- 错误写法:'abc' 无法转为 INT
SELECT from_csv('abc, 0.8', 'a INT, b DOUBLE');
-- 返回 NULL

-- 正确写法:类型匹配
SELECT from_csv('1, 0.8', 'a INT, b DOUBLE');
📱关注公众号

「数据仓库技术」文章同步更新,不错过每一篇干货

微信公众号二维码
💬加群交流

备注「数据仓库技术」加入社群,每日一道大厂SQL真题

交流微信二维码

你可能还想看