You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PySpark基于ADLS中CSV创建外部表仅显示一列,Parquet正常

问题原因与解决办法

核心问题:OPTIONS参数的引号写法错误

你的代码里OPTIONS块里的参数用了单引号包裹键和值,这会导致Spark无法正确识别CSV的分隔符配置,最终把整行内容当成单一列col读取。

修正后的代码

把OPTIONS里的单引号去掉(键不需要引号),值改用单引号或双引号都可以,规范写法如下:

CREATE EXTERNAL TABLE IF NOT EXISTS <table_name>
(
    column_1 string,
    column_2 int,
    column_3 string
)
USING CSV
OPTIONS 
(
    delimiter ',',
    header 'true',
    inferSchema 'false'
)
LOCATION '<abfss_location>'

也可以用键值对的标准写法(更清晰):

CREATE EXTERNAL TABLE IF NOT EXISTS <table_name>
(
    column_1 string,
    column_2 int,
    column_3 string
)
USING CSV
OPTIONS 
(
    "delimiter" = ",",
    "header" = "true",
    "inferSchema" = "false"
)
LOCATION "<abfss_location>"

为什么Parquet文件不受影响?

Parquet是列式存储格式,本身自带完整的元数据(包括列名、数据类型等),Spark读取Parquet时会直接解析内置的元数据,不需要依赖OPTIONS里的分隔符这类配置,所以即使引号写法有误,也能正确识别列结构。而CSV是纯文本格式,完全依赖OPTIONS中的配置来拆分列,一旦配置无法被正确识别,就会默认把整行内容作为单列col读取。

额外验证建议

  • 执行DESCRIBE <table_name>查看表的元数据,确认列定义是否正确加载
  • 用spark.read.csv("<abfss_location>", header=True, inferSchema=False).show()直接读取CSV文件,验证是否能正确解析列,排除ADLS路径或文件本身的问题

内容的提问来源于stack exchange,提问作者dan ward

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 04:05:14