إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
ينطبق على:
Databricks Runtime
تعريف جدول باستخدام تنسيق Hive.
بناء الجملة
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 SELECT بأي ترتيب. على سبيل المثال، يمكنك الكتابة COMMENT table_comment بعد TBLPROPERTIES.
إشعار
يجب تحديد إما عبارة STORED AS أو ROW FORMAT . وإلا، يستخدم محلل SQL بناء الجملة CREATE TABLE [USING] لتحليله وإنشاء جدول Delta بشكل افتراضي.
المعلمات
table_identifier
اسم جدول، مؤهل اختياريا باسم مخطط.
بناء الجملة:
[schema_name.] table_nameخارجي
تعريف الجدول باستخدام المسار المتوفر في
LOCATION.مقسمة حسب
تقسيم الجدول حسب الأعمدة المحددة.
تنسيق الصف
استخدم العبارة
SERDEلتحديد SerDe مخصص لجدول واحد. بخلاف ذلك، استخدم العبارةDELIMITEDلاستخدام SerDe الأصلي وحدد المحدد وحرف الإلغاء والحرف الفارغ وما إلى ذلك.SERDE
تحديد SerDe مخصص لجدول واحد.
serde_class
تحديد اسم فئة مؤهل بالكامل ل SerDe مخصص.
خصائص SERDE
قائمة أزواج قيم المفاتيح المستخدمة لوضع علامة على تعريف SerDe.
محدد
DELIMITEDيمكن استخدام العبارة لتحديد SerDe الأصلي وتحديد المحدد وحرف الإلغاء والحرف الفارغ وما إلى ذلك.الحقول التي تم إنهاؤها بواسطة
يستخدم لتعريف فاصل أعمدة.
تم إنهاء عناصر المجموعة بواسطة
يستخدم لتعريف فاصل عناصر المجموعة.
تم إنهاء مفاتيح الخريطة بواسطة
يستخدم لتعريف فاصل مفاتيح الخريطة.
الأسطر التي تم إنهاؤها بواسطة
يستخدم لتعريف فاصل صف.
القيمة الخالية المعرفة على أنها
يستخدم لتعريف القيمة المحددة ل NULL.
تم الهروب من قبل
حدد آلية الإلغاء.
تم إنهاء عناصر المجموعة بواسطة
تعريف فاصل عناصر المجموعة.
تم إنهاء مفاتيح الخريطة بواسطة
تعريف فاصل مفاتيح الخريطة.
الأسطر التي تم إنهاؤها بواسطة
تعريف فاصل صف.
القيمة الخالية المعرفة على أنها
حدد القيمة المحددة ل
NULL.مخزن ك
تنسيق الملف للجدول. تتضمن
TEXTFILEالتنسيقات المتوفرة وRCFILESEQUENCEFILEوORCPARQUET.AVROبدلا من ذلك، يمكنك تحديد تنسيقات الإدخال والإخراج الخاصة بك من خلالINPUTFORMATوOUTPUTFORMAT. يمكن استخدام التنسيقاتTEXTFILESEQUENCEFILEوRCFILEفقط معROW FORMAT SERDEو فقطTEXTFILEيمكن استخدامها معROW FORMAT DELIMITED.مكان
المسار إلى الدليل حيث يتم تخزين بيانات الجدول، والذي يمكن أن يكون مسارا على التخزين الموزع.
التعليق
سلسلة حرفية لوصف الجدول.
TBLPROPERTIES
قائمة أزواج قيم المفاتيح المستخدمة لوضع علامة على تعريف الجدول.
AS select_statement
تعبئة الجدول باستخدام البيانات من عبارة التحديد.
الأمثلة
--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/';