Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de changer d’annuaire.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer d’annuaire.
S’applique à :
Databricks Runtime
Définit une table à l’aide du format 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 ]
Les clauses situées entre la clause de définition de colonne et la clause AS SELECT peuvent apparaître dans n'importe quel ordre. Par exemple, vous pouvez écrire COMMENT table_comment après TBLPROPERTIES.
Remarque
Vous devez spécifier la clause STORED AS ou ROW FORMAT. Sinon, l’analyseur SQL utilise la CREATE TABLE syntaxe [USING] pour l’analyser et crée une table Delta par défaut.
Paramètres
table_identifier
Nom de table, éventuellement qualifié avec un nom de schéma.
Syntaxe :
[schema_name.] table_nameEXTERNAL
Définit la table en utilisant le chemin fourni dans
LOCATION.PARTITIONNÉ PAR
Partitionne la table créée par les colonnes spécifiées.
FORMAT DE RANGÉE
Utilisez la clause
SERDEpour spécifier une infrastructure SerDe personnalisée pour une table. Sinon, utilisez la clauseDELIMITEDpour désigner l’infrastructure SerDe native natif et spécifier le délimiteur, le caractère d’échappement, le caractère Null, etc.SERDE
Spécifie un SerDe personnalisé pour une table.
serde_class
Spécifie un nom de classe complet d'un SerDe personnalisé.
SERDEPROPERTIES
Liste de paires clé-valeur utilisées pour étiqueter la définition de SerDe.
DELIMITED
Vous pouvez utiliser la clause
DELIMITEDpour spécifier l’élément SerDe natif et indiquer le délimiteur, le caractère d’échappement, le caractère Null, etc.CHAMPS TERMINÉS PAR
Permet de définir un séparateur de colonnes.
ÉLÉMENTS DE COLLECTION ARRÊTÉS PAR
Permet de définir un séparateur d'éléments de collection.
CLÉS DE MAP TERMINÉES PAR
Permet de définir un séparateur de clés de mappage.
LIGNES TERMINÉES PAR
Permet de définir un séparateur de lignes.
NULL DÉFINI COMME
Permet de définir la valeur spécifique pour NULL.
ÉCHAPÉE PAR
Définissez le mécanisme d’échappement.
ÉLÉMENTS DE COLLECTION ARRÊTÉS PAR
Définissez un séparateur d'éléments de collection.
CLÉS DE MAP TERMINÉES PAR
Définissez un séparateur de clés de mappage.
LIGNES TERMINÉES PAR
Définissez un séparateur de lignes.
NULL DÉFINI COMME
Définissez la valeur spécifique pour
NULL.STOCKÉ COMME
Format de fichier pour la table. Les formats disponibles sont
TEXTFILE,SEQUENCEFILE,RCFILE,ORC,PARQUETetAVRO. Vous pouvez également spécifier vos propres formats d’entrée et de sortie à l’aide deINPUTFORMATetOUTPUTFORMAT. Seuls les formatsTEXTFILE,SEQUENCEFILEetRCFILEpeuvent être utilisés avecROW FORMAT SERDE, et seul le formatTEXTFILEpeut être utilisé avecROW FORMAT DELIMITED.LOCATION
Chemin d’accès au répertoire sous lequel les données de table sont stockées, qui peut être un chemin d’accès sur le stockage distribué.
COMMENT
Littéral de chaîne pour décrire la colonne.
TBLPROPERTIES
Liste de paires clé-valeur utilisées pour étiqueter la définition de table.
AS select_statement
Remplit la table à l’aide des données de l’instruction SELECT.
Exemples
--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/';