首页 > 解决方案 > 来自 SQL 的 Spark(Databricks)非托管表不处理标头

问题描述

尝试使用 SQL API 从 CSV 文件在 Spark (Databricks) 中创建非托管表。但是第一行没有被用作标题。

图 2 显示使用 Dataframe API 创建非托管表时第一行是正确的。Dataframe 是从同一个 csv 文件加载的。

但是,图 1 显示,在 SQL 中从 CSV 文件数据源创建非托管表时,不会将第一行作为标题处理。我是否遗漏了一些“标题”选项?如果是这样,那将如何编码?

在此处输入图像描述

在此处输入图像描述

数据框 API

标签: sqlapache-sparkdatabricks

解决方案


您只需要OPTIONS按照文档中的说明提供即可。

在该选项块中,您可以列出与特定于 Spark CSV 阅读器的选项匹配的键/值对,例如,options ('header' = 'true', 'sep' = ',')将强制 Spark 忽略标题行,并将分隔符设置为逗号。您还可以添加'inferSchema' = trueinto 选项,在这种情况下,您可以省略列声明 - Spark 会为您推断它(对于小型数据集可以,但对于大型数据集则不行):

create table test.test using csv 
options ('header' = 'true', 'sep' = ',', 'inferSchema' = true) 
location '/databricks-datasets/Rdatasets/data-001/csv/COUNT/affairs.csv'

推荐阅读