创建 DataBricks 增量表时检测 CSV 标头?

Dat*_*ret 2 azure-databricks delta-lake

不用说,我是 Spark DataBricks 和 Delta 的新手。

我正在尝试使用 %sql 从简单的 csv 创建一个增量表,其中第一行是标题行。不幸的是,我似乎无法获得初始 CREATE TABLE 来识别 CSV 中的标题列(请注意,我一直在使用 DataBricks 快速入门作为指南 - https://docs.databricks.com/delta/quick -start.html

我在 Databricks 笔记本中得到的代码是

%sql
CREATE TABLE people
USING delta
LOCATION '/dbfs/mnt/mntdata/DimTransform/People.csv'
Run Code Online (Sandbox Code Playgroud)

我尝试使用 TBLPROPERTIES ("headers" = "true") 但没有成功 - 见下文

%sql
CREATE TABLE people
USING delta
TBLPROPERTIES ("headers" = "true")
AS SELECT *
FROM csv.'/mnt/mntdata/DimTransform/People.csv'
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,csv 数据都会加载到表中,但标题行仅作为第一个标准行包含在数据中。

从 csv 加载时,我如何让这个 %sql CREATE TABLE 将第一个/标题行识别为标题?

谢谢

Fab*_*ltz 5

也许您必须做一个小的解决方法,因为您使用的是 CSV 文件,而不是 JSON 或 PARQUET,这些文件具有架构和 csv 编号。

所以我建议这样做::

%sql
drop table if exists tempPeopleTable ;
CREATE TABLE tempPeopleTable
  USING csv
  OPTIONS (path "/mnt/mntdata/DimTransform/People.csv", header "true", inferSchema "true");

CREATE TABLE people
USING delta
AS SELECT * FROM tempPeopleTable;

drop table if exists tempPeopleTable;
Run Code Online (Sandbox Code Playgroud)