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

时间:2019-01-12 09:07:55

标签: azure-databricks delta-lake

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

我正在尝试使用%sql从一个简单的csv创建一个Delta表,其中第一行是标题行。不幸的是,我似乎无法获得初始的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'

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

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

在两种情况下,csv数据都被加载到表中,但标头行只是作为第一标准行包含在数据中。

有什么想法,当我从csv加载时,如何获取此%sql CREATE TABLE以将第一行/标题行识别为标题?

谢谢

1 个答案:

答案 0 :(得分:0)

也许因为您使用的是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;