Aracılığıyla paylaş


Hive biçiminde CREATE TABLE

Şunlar için geçerlidir: onay işareti evet olarak işaretlenmiş Databricks Runtime

Hive biçimini kullanarak bir tablo tanımlar.

Sözdizimi

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 ]

Sütun tanımı yan tümcesi ile yan tümcesi AS SELECT arasındaki yan tümceler herhangi bir sırada görünebilir. Örneğin, sonra TBLPROPERTIESyazabilirsinizCOMMENT table_comment.

Not

or ROW FORMAT yan tümcesini STORED AS belirtmeniz gerekir. Aksi takdirde, SQL ayrıştırıcısı CREATE TABLE [USING] söz dizimini kullanarak ayrıştırır ve varsayılan olarak bir Delta tablosu oluşturur.

Parametreler

  • table_identifier

    İsteğe bağlı olarak şema adıyla nitelenmiş bir tablo adı.

    Sözdizimi: [schema_name.] table_name

  • DIŞ

    içinde sağlanan LOCATIONyolu kullanarak tabloyu tanımlar.

  • BÖLÜMLENDİ

    Tabloyu belirtilen sütunlara göre bölümler.

  • SATıR BIÇIMI

    SERDE Bir tablo için özel bir SerDe belirtmek için yan tümcesini kullanın. Aksi takdirde, yerel SerDe'yi kullanmak ve sınırlayıcı, kaçış karakteri, null karakter vb. belirtmek için yan tümcesini kullanın DELIMITED .

  • SERDE

    Bir tablo için özel bir SerDe belirtir.

  • serde_class

    Özel bir SerDe'nin tam sınıf adını belirtir.

  • SERDEPROPERTIES

    SerDe tanımını etiketlemek için kullanılan anahtar-değer çiftlerinin listesi.

  • SINIRLANDIRILMIŞ

    DELIMITED yan tümcesi yerel SerDe'yi belirtmek ve sınırlayıcıyı, kaçış karakterini, null karakteri vb. belirtmek için kullanılabilir.

  • SONLANDıRıLAN ALANLAR

    Sütun ayırıcı tanımlamak için kullanılır.

  • SONLANDıRıLAN KOLEKSIYON ÖĞELERI

    Koleksiyon öğesi ayırıcısı tanımlamak için kullanılır.

  • SONLANDıRıLAN EŞLEME ANAHTARLARı

    Eşleme anahtarı ayırıcısı tanımlamak için kullanılır.

  • SON VERİCİ SATıRLAR

    Satır ayırıcı tanımlamak için kullanılır.

  • NULL OLARAK TANıMLANMıŞ

    NULL için belirli bir değeri tanımlamak için kullanılır.

  • KAÇTI

    Kaçış mekanizmasını tanımlayın.

  • SONLANDıRıLAN KOLEKSIYON ÖĞELERI

    Koleksiyon öğesi ayırıcısı tanımlayın.

  • SONLANDıRıLAN EŞLEME ANAHTARLARı

    Eşleme anahtarı ayırıcısı tanımlayın.

  • SON VERİCİ SATıRLAR

    Satır ayırıcısı tanımlayın.

  • NULL OLARAK TANıMLANMıŞ

    için NULLbelirli bir değeri tanımlayın.

  • FARKLı DEPOLANIYOR

    Tablonun dosya biçimi. Kullanılabilir biçimler , SEQUENCEFILE, RCFILE, ORC, PARQUETve AVRObiçimlerini içerirTEXTFILE. Alternatif olarak ve aracılığıyla INPUTFORMAT OUTPUTFORMATkendi giriş ve çıkış biçimlerinizi belirtebilirsiniz. Yalnızca , ve SEQUENCEFILERCFILE biçimleri TEXTFILEile ROW FORMAT SERDE kullanılabilir ve yalnızca TEXTFILE ile ROW FORMAT DELIMITEDkullanılabilir.

  • YER

    Tablo verilerinin depolandığı dizinin yolu; dağıtılmış depolamada bir yol olabilir.

  • YORUM

    Tabloyu açıklamak için dize değişmez değeri.

  • TBLPROPERTIES

    Tablo tanımını etiketlemek için kullanılan anahtar-değer çiftlerinin listesi.

  • AS select_statement

    Select deyimindeki verileri kullanarak tabloyu doldurur.

Örnekler

--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/';