创建 DataBricks Delta Table 时检测 CSV Headers?
Detecting CSV Headers when creating a DataBricks Delta Table?
不用说,我是 Spark DataBricks 和 Delta 的新手。
我正在尝试使用 %sql 从第一行是 header 行的简单 csv 创建增量 table。不幸的是,我似乎无法让初始 CREATE TABLE 识别 CSV 中的 header 列(请注意,我一直在使用 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 数据都加载到 table 中,但 header 行仅作为第一个标准行包含在数据中。
任何想法我如何得到这个 %sql CREATE TABLE 以在从 csv 加载时将 first/header 行识别为 header?
谢谢
也许您需要做一个小的解决方法,因为您使用的是 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;
不用说,我是 Spark DataBricks 和 Delta 的新手。
我正在尝试使用 %sql 从第一行是 header 行的简单 csv 创建增量 table。不幸的是,我似乎无法让初始 CREATE TABLE 识别 CSV 中的 header 列(请注意,我一直在使用 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 数据都加载到 table 中,但 header 行仅作为第一个标准行包含在数据中。
任何想法我如何得到这个 %sql CREATE TABLE 以在从 csv 加载时将 first/header 行识别为 header?
谢谢
也许您需要做一个小的解决方法,因为您使用的是 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;