Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:
Databricks Runtime
Definuje tabulku pomocí formátu Hive.
Syntaxe
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 ]
Klauzule mezi klauzulí definice sloupce a klauzulí AS SELECT se mohou objevit v libovolném pořadí. Můžete například napsat COMMENT table_comment za TBLPROPERTIES.
Poznámka:
Musíte zadat buď klauzuli STORED AS , nebo ROW FORMAT klauzuli. V opačném případě analyzátor SQL použije syntaxi CREATE TABLE [USING] k analýze a ve výchozím nastavení vytvoří tabulku Delta.
Parametry
table_identifier
Název tabulky, volitelně upřesněný názvem schématu.
Syntax:
[schema_name.] table_nameEXTERNÍ
Definuje tabulku pomocí cesty zadané v
LOCATION.ROZDĚLENO PODLE
Rozdělí tabulku podle zadaných sloupců.
FORMÁT ŘÁDKU
SERDEPomocí klauzule zadejte vlastní SerDe pro jednu tabulku. V opačném případě použijteDELIMITEDklauzuli pro využití nativní SerDe a určete oddělovač, escape znak, nulový znak a podobně.SERDE
Určuje vlastní SerDe pro jednu tabulku.
serde_class
Určuje plně kvalifikovaný název třídy vlastního SerDe.
SERDEPROPERTIES
Seznam párů klíč-hodnota použitých k označení definice SerDe.
ODDĚLENÝ
Klauzuli
DELIMITEDlze použít k určení nativní SerDe a specifikaci oddělovače, řídicího znaku, nulového znaku atd.POLE UKONČENA ZNAKEM
Slouží k definování oddělovače sloupců.
POLOŽKY KOLEKCE UKONČENÉ UŽIVATELEM
Slouží k definování oddělovače položek kolekce.
MAPOVÉ KLÍČE UKONČENÉ POMOCÍ
Slouží k definování oddělovače mapového klíče.
ŘÁDKY UKONČENÉ
Slouží k definování oddělovače řádků.
NULL JE DEFINOVÁNO JAKO
Slouží k definování konkrétní hodnoty pro hodnotu NULL.
UTÉCI POMOCÍ
Definujte únikový mechanismus.
POLOŽKY KOLEKCE UKONČENÉ UŽIVATELEM
Definujte oddělovač položek kolekce.
MAPOVÉ KLÍČE UKONČENÉ POMOCÍ
Definujte oddělovač klíčů mapy.
ŘÁDKY UKONČENÉ
Definujte oddělovač řádků.
NULL JE DEFINOVÁNO JAKO
Definujte konkrétní hodnotu pro
NULL.ULOŽENO JAKO
Formát souboru tabulky. Dostupné formáty zahrnují
TEXTFILE, ,SEQUENCEFILERCFILE,ORC,PARQUET, aAVRO. Alternativně můžete zadat vlastní vstupní a výstupní formáty prostřednictvímINPUTFORMATaOUTPUTFORMAT. Pouze formátyTEXTFILE,SEQUENCEFILEaRCFILElze použít sROW FORMAT SERDEa pouzeTEXTFILEsROW FORMAT DELIMITED.UMÍSTĚNÍ
Cesta k adresáři, kde jsou uložena data tabulky, což může být cesta v distribuovaném úložišti.
KOMENTÁŘ
Řetězcový literál popisující tabulku.
TBLPROPERTIES
Seznam párů klíč-hodnota použitých k označení definice tabulky.
AS select_statement
Naplní tabulku pomocí dat z příkazu select.
Příklady
--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/';