Hive biçiminde CREATE TABLE
Şunlar için geçerlidir: 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 TBLPROPERTIES
yazabilirsinizCOMMENT 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
LOCATION
yolu 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ınDELIMITED
.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
NULL
belirli bir değeri tanımlayın.FARKLı DEPOLANIYOR
Tablonun dosya biçimi. Kullanılabilir biçimler ,
SEQUENCEFILE
,RCFILE
,ORC
,PARQUET
veAVRO
biçimlerini içerirTEXTFILE
. Alternatif olarak ve aracılığıylaINPUTFORMAT
OUTPUTFORMAT
kendi giriş ve çıkış biçimlerinizi belirtebilirsiniz. Yalnızca , veSEQUENCEFILE
RCFILE
biçimleriTEXTFILE
ileROW FORMAT SERDE
kullanılabilir ve yalnızcaTEXTFILE
ileROW FORMAT DELIMITED
kullanı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/';
İlgili deyimler
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin