Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Область применения:
Databricks Runtime
Определяет таблицу с помощью формата Hive.
Синтаксис
CREATE [ EXTERNAL ] TABLE [ IF NOT EXISTS ] table_identifier
[ ( col_name1[:] col_type1 [ COMMENT col_comment1 ], ... ) ]
[ COMMENT table_comment ]
[ PARTITIONED BY ( col_name2[:] col_type2 [ COMMENT col_comment2 ], ... )
| ( col_name1, col_name2, ... ) ]
[ ROW FORMAT row_format ]
[ STORED AS file_format ]
[ LOCATION path ]
[ TBLPROPERTIES ( key1=val1, key2=val2, ... ) ]
[ AS select_statement ]
row_format:
: SERDE serde_class [ WITH SERDEPROPERTIES (k1=v1, k2=v2, ... ) ]
| DELIMITED [ FIELDS TERMINATED BY fields_terminated_char [ ESCAPED BY escaped_char ] ]
[ COLLECTION ITEMS TERMINATED BY collection_items_terminated_char ]
[ MAP KEYS TERMINATED BY map_key_terminated_char ]
[ LINES TERMINATED BY row_terminated_char ]
[ NULL DEFINED AS null_char ]
Предложения между предложением определения столбца и предложением AS SELECT могут отображаться в любом порядке. Например, можно ввести COMMENT table_comment после TBLPROPERTIES.
Примечание.
Необходимо указать либо предложение, либо STORED ASROW FORMAT предложение. В противном случае средство синтаксического анализа SQL использует синтаксис CREATE TABLE [USING] для его анализа и создания Delta-таблицы по умолчанию.
Параметры
table_identifier
Имя таблицы, опционально указанное с именем схемы.
Синтаксис:
[schema_name.] table_nameEXTERNAL
Определяет таблицу с помощью пути, предоставленного в
LOCATION.РАЗДЕЛЁННО ПО
Секционирует таблицу по указанным столбцам.
ФОРМАТ СТРОКИ
Используйте условие
SERDE, чтобы указать настраиваемый SerDe для одной таблицы. В противном случае используйте предложениеDELIMITEDдля использования собственного SerDe и укажите разделитель, escape-символ, нуль-символ и т. д.SERDE
Задает настраиваемый SerDe для одной таблицы.
serde_class
Указывает полное имя класса пользовательского SerDe.
SERDEPROPERTIES
Список пар "ключ-значение", используемых для добавления тегов в определение SerDe.
DELIMITED
Предложение
DELIMITEDможно использовать для указания собственного SerDe и указания разделителя, escape-символа, нуль-символа и т. д.ПОЛЯ ЗАВЕРШЕНЫ ПО
Используется для определения разделителя столбцов.
ЭЛЕМЕНТЫ КОЛЛЕКЦИИ ЗАВЕРШЕНЫ
Используется для определения разделителя элементов сбора.
КЛЮЧИ КАРТЫ ОГРАНИЧЕНЫ
Используется для определения разделителя ключей сопоставления.
СТРОКИ, ЗАВЕРШЁННЫЕ РАЗДЕЛИТЕЛЕМ
Используется для определения разделителя строк.
NULL ОПРЕДЕЛЁН КАК
Используется для определения конкретного значения для NULL.
ПРЕДОСТАВЛЕНО
Определяет механизм экранирования.
ЭЛЕМЕНТЫ КОЛЛЕКЦИИ ЗАВЕРШЕНЫ
Определяет разделитель элементов сбора.
КЛЮЧИ КАРТЫ ОКАНЧИВАЮТСЯ НА
Определяет разделитель ключей сопоставления.
СТРОКИ, ЗАВЕРШАЕМЫЕ НА
Определяет разделитель строк.
NULL, ОПРЕДЕЛЕННОЕ КАК
Определяет конкретное значение для
NULL.ХРАНИМАЯ КАК
Формат файла для таблицы. Доступные форматы:
TEXTFILE,SEQUENCEFILE,RCFILE,ORC,PARQUETиAVRO. Кроме того, можно указать собственные форматы входных и выходных данных с помощьюINPUTFORMATиOUTPUTFORMAT. СTEXTFILEможно использовать только форматыSEQUENCEFILE,RCFILEиROW FORMAT SERDE, а сTEXTFILE— только форматROW FORMAT DELIMITED.LOCATION
Путь к каталогу, в котором хранятся данные таблицы. Это может быть путь к распределенному хранилищу.
COMMENT
Строковый литерал для описания таблицы.
TBLPROPERTIES
Список пар "ключ-значение", используемых для тега определения таблицы.
AS select_statement
Заполняет таблицу данными из инструкции select.
Примеры
--Use hive format
CREATE TABLE student (id INT, name STRING, age INT) STORED AS ORC;
--Use data from another table
CREATE TABLE student_copy STORED AS ORC
AS SELECT * FROM student;
--Specify table comment and properties
CREATE TABLE student (id INT, name STRING, age INT)
COMMENT 'this is a comment'
STORED AS ORC
TBLPROPERTIES ('foo'='bar');
--Specify table comment and properties with different clauses order
CREATE TABLE student (id INT, name STRING, age INT)
STORED AS ORC
TBLPROPERTIES ('foo'='bar')
COMMENT 'this is a comment';
--Create partitioned table
CREATE TABLE student (id INT, name STRING)
PARTITIONED BY (age INT)
STORED AS ORC;
--Create partitioned table with different clauses order
CREATE TABLE student (id INT, name STRING)
STORED AS ORC
PARTITIONED BY (age INT);
--Use Row Format and file format
CREATE TABLE student (id INT, name STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
--Use complex datatype
CREATE EXTERNAL TABLE family(
name STRING,
friends ARRAY<STRING>,
children MAP<STRING, INT>,
address STRUCT<street: STRING, city: STRING>
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' ESCAPED BY '\\'
COLLECTION ITEMS TERMINATED BY '_'
MAP KEYS TERMINATED BY ':'
LINES TERMINATED BY '\n'
NULL DEFINED AS 'foonull'
STORED AS TEXTFILE
LOCATION '/tmp/family/';
--Use predefined custom SerDe
CREATE TABLE avroExample
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
TBLPROPERTIES ('avro.schema.literal'='{ "namespace": "org.apache.hive",
"name": "first_schema",
"type": "record",
"fields": [
{ "name":"string1", "type":"string" },
{ "name":"string2", "type":"string" }
] }');
--Use personalized custom SerDe(we may need to `ADD JAR xxx.jar` first to ensure we can find the serde_class,
--or you may run into `CLASSNOTFOUND` exception)
ADD JAR /tmp/hive_serde_example.jar;
CREATE EXTERNAL TABLE family (id INT, name STRING)
ROW FORMAT SERDE 'com.ly.spark.serde.SerDeExample'
STORED AS INPUTFORMAT 'com.ly.spark.example.serde.io.SerDeExampleInputFormat'
OUTPUTFORMAT 'com.ly.spark.example.serde.io.SerDeExampleOutputFormat'
LOCATION '/tmp/family/';