Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Ş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ı ifadesi ile AS SELECT
ifadesi arasındaki ifadeler herhangi bir sırada görünebilir. Örneğin, TBLPROPERTIES
sonra COMMENT table_comment
yazabilirsiniz.
Dikkat
STORED AS
veya ROW FORMAT
yan tümcesini belirtmeniz gerekir. Aksi takdirde, SQL ayrıştırıcısı ayrıştırmak için [USING] CREATE TABLE söz dizimini kullanı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Ş
LOCATION
içinde sağlanan yolu kullanarak tabloyu tanımlar.BÖLÜMLERE GÖRE AYRIM
Tabloyu belirtilen sütunlara göre bölümler.
Satır Biçimi
Bir tablo için özel bir SerDe belirtmek için
SERDE
yan tümcesini kullanın. Aksi takdirde, yerel SerDe'yi kullanmak ve sınırlandırıcı, kaçış karakteri, null karakter vb. belirtmek içinDELIMITED
yan tümcesini kullanın.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
Bir 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.
HARıTA ANAHTARLARı, KARAKTERLE SONLANDıRıLıR
Harita anahtarı ayırıcısı tanımlamak için kullanılır.
SONLANDIRILAN SATIRLAR
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ı
Harita anahtarı ayırıcı tanımlayın.
SATIRLAR ‹karakter› İLE SONLANDIRILIR
Satır ayırıcısı tanımlayın.
NULL OLARAK TANıMLANMıŞ
için
NULL
belirli bir değeri tanımlayın.OLARAK DEPOLANDI
Tablonun dosya biçimi. Kullanılabilir biçimler ,
TEXTFILE
,SEQUENCEFILE
,RCFILE
,ORC
vePARQUET
biçimlerini içerirAVRO
. Alternatif olarak ve aracılığıylaINPUTFORMAT
OUTPUTFORMAT
kendi giriş ve çıkış biçimlerinizi belirtebilirsiniz. YalnızcaTEXTFILE
,SEQUENCEFILE
veRCFILE
biçimleriROW FORMAT SERDE
ile kullanılabilir ve yalnızcaTEXTFILE
ROW FORMAT DELIMITED
ile kullanılabilir.YER
Tablo verilerinin depolandığı dizinin yolu. Dağıtılmış depolamada da bir yol olabilir.
YORUM
Tabloyu tanımlayan bir sabit dize.
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/';