Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:
Databricks Runtime
Define uma tabela usando o formato Hive.
Sintaxe
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 cláusulas entre a cláusula de definição de coluna e a cláusula AS SELECT podem aparecer em qualquer ordem. Por exemplo, você pode escrever COMMENT table_comment depois de TBLPROPERTIES.
Nota
Você deve especificar a cláusula STORED AS ou ROW FORMAT. Caso contrário, o analisador SQL usa a sintaxe
Parâmetros
table_identifier
Um nome de tabela, opcionalmente qualificado com um nome de esquema.
Sintaxe:
[schema_name.] table_nameEXTERNA
Define a tabela usando o caminho fornecido em
LOCATION.DIVIDIDO POR
Particiona a tabela pelas colunas especificadas.
FORMATO DA LINHA
Use a cláusula
SERDEpara especificar um SerDe personalizado para uma tabela. Caso contrário, use aDELIMITEDcláusula para usar o SerDe nativo e especifique o delimitador, caractere de escape, caractere nulo e assim por diante.SERDE
Especifica um SerDe personalizado para uma tabela.
serde_class
Especifica um nome de classe totalmente qualificado de um SerDe personalizado.
SERDEPROPRIEDADES
Uma lista de pares chave-valor usados para etiquetar a definição SerDe.
DELIMITADO
A
DELIMITEDcláusula pode ser usada para especificar o SerDe nativo e declarar o delimitador, caractere de escape, caractere nulo e assim por diante.CAMPOS TERMINADOS POR
Usado para definir um separador de coluna.
ITENS DE COLEÇÃO ENCERRADOS POR
Usado para definir um separador de item de coleção.
CHAVES DE MAPA TERMINADAS POR
Usado para definir um separador de chave de mapa.
LINHAS TERMINADAS POR
Usado para definir um separador de linha.
NULL DEFINIDO COMO
Usado para definir o valor específico para NULL.
ESCAPADO POR
Defina o mecanismo de escape.
ITENS DE COLEÇÃO ENCERRADOS POR
Defina um separador de item de coleção.
CHAVES DE MAPA TERMINADAS POR
Defina um separador de chave de mapa.
LINHAS TERMINADAS POR
Defina um separador de linha.
NULL DEFINIDO COMO
Defina o valor específico para
NULL.ARMAZENADO COMO
O formato de arquivo para a tabela. Os formatos disponíveis incluem
TEXTFILE,SEQUENCEFILE,RCFILE,ORC,PARQUETeAVRO. Como alternativa, você pode especificar seus próprios formatos de entrada e saída através deINPUTFORMATeOUTPUTFORMAT. Apenas formatosTEXTFILE,SEQUENCEFILEeRCFILEpode ser usado comROW FORMAT SERDEe sóTEXTFILEpode ser usado comROW FORMAT DELIMITED.LOCALIZAÇÃO
Caminho para o diretório onde os dados da tabela são armazenados, que pode ser um caminho no armazenamento distribuído.
COMENTAR
Um literal de cadeia de caracteres para descrever a tabela.
TBLPROPERTIES
Uma lista de pares chave-valor usados para etiquetar a definição da tabela.
AS select_statement
Preenche a tabela usando os dados da instrução select.
Exemplos
--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/';