Обнаружение заголовков CSV при создании дельта-таблицы DataBricks?

Излишне говорить, что я новичок в Spark DataBricks и Delta.

Я пытаюсь создать таблицу 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'

Я пробовал использовать TBLPROPERTIES ("headers" = "true"), но безуспешно - см. Ниже

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

В обоих случаях данные csv загружаются в таблицу, но строка заголовка просто включается в данные как первая стандартная строка.

Есть идеи, как заставить этот% sql CREATE TABLE распознавать первую строку / заголовок как заголовок при загрузке из csv?

Спасибо


person DataFerret    schedule 12.01.2019    source источник


Ответы (1)


Возможно, вам нужно найти небольшое обходное решение, потому что вы используете файл 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;
person Fabio Schultz    schedule 13.01.2019
comment
Спасибо, Фабио, это хорошее / ясное предложение, и я рад с ним согласиться, если это лучший обходной путь. Тем не менее, хотя я согласен, что csv не имеет определенной схемы, у него есть строка заголовка, которая обычно распознается как способ определения схемы в csv. Я предполагал / надеялся, что у Delta будет механизм для вывода схемы из заголовков csv таким же образом, как ваш предлагаемый код делает вывод о схеме при создании TABLE tempPeopleTable. - person DataFerret; 13.01.2019
comment
На самом деле проблема заключается не в создании дельта-таблицы, проблема в выборе * из csv.file здесь я не нашел способа `` сказать '' блокам данных, что первый столбец - это схема - person Fabio Schultz; 13.01.2019