用蜂巢創建表的格式
適用於:磚運行時
定義一個表使用蜂巢格式。
語法
創建(外部]表(如果不存在]table_identifier((col_name1[:]col_type1(評論col_comment1),…)](評論table_comment](分區通過(col_name2[:]col_type2(評論col_comment2),…)|(col_name1,col_name2,…)](行格式row_format](存儲作為file_format](位置路徑](TBLPROPERTIES(key1=val1,key2=val2,…)](作為select_statement]row_format::SERDEserde_class(與SERDEPROPERTIES(k1=v1,k2=v2,…)]|分隔(字段終止通過fields_terminated_char(逃了出來通過escaped_char]](集合項目終止通過collection_items_terminated_char](地圖鍵終止通過map_key_terminated_char](行終止通過row_terminated_char](零定義作為null_char]
列定義條款和之間的條款作為選擇
條款可以出現在任何順序。例如,您可以編寫評論table_comment
後TBLPROPERTIES
。
請注意
在磚上麵8.0運行時,您必須指定存儲作為
或行格式
條款。否則,SQL解析器使用創建表(使用)語法解析它並創建一個默認三角洲表。
參數
table_identifier
表名稱,選擇合格的模式名。
語法:
(schema_name。)table_name
外部
定義了表使用提供的路徑
位置
。分區的
指定分區的表列。
行格式
使用
SERDE
為一個表指定一個自定義SerDe條款。否則,使用分隔
條款使用本機SerDe和指定分隔符,轉義字符,null字符等等。SERDE
為一個表指定一個自定義SerDe。
serde_class
指定一個自定義SerDe的完全限定類名。
SERDEPROPERTIES
鍵值對列表用於標記SerDe定義。
分隔
的
分隔
條款可以用來指定分隔符,本機SerDe和國家轉義字符,null字符等等。字段終止的
用於定義一列分隔符。
收集項目終止,
用於定義一組項目分離器。
地圖鍵終止的
用於定義映射鍵分隔符。
行終止,
用於定義一行分隔符。
空定義為
用於定義特定的值為NULL。
逃跑了
定義逃避機製。
收集項目終止,
定義一個集合項目分離器。
地圖鍵終止的
定義了一個映射鍵分隔符。
行終止,
定義一個行分隔符。
空定義為
定義的特定值
零
。存儲為
表的文件格式。可用的格式包括
文本文件
,SEQUENCEFILE
,RCFILE
,獸人
,拚花
,AVRO
。此外,您可以指定自己的輸入和輸出格式INPUTFORMAT
和OUTPUTFORMAT
。唯一的格式文本文件
,SEQUENCEFILE
,RCFILE
可以使用行格式SERDE
,隻文本文件
可以使用行格式分隔
。位置
數據存儲路徑的目錄表,這可能是分布式存儲的路徑。
評論
一個字符串來描述表。
TBLPROPERTIES
鍵值對列表用來標記表定義。
作為select_statement
使用select語句的數據填充表。
例子
——使用蜂巢格式創建表學生(idINT,的名字字符串,年齡INT)存儲作為獸人;——使用另一個表的數據創建表student_copy存儲作為獸人作為選擇*從學生;——指定表評論和屬性創建表學生(idINT,的名字字符串,年齡INT)評論“這是一個評論”存儲作為獸人TBLPROPERTIES(“foo”=“酒吧”);和屬性不同的條款——指定表意見創建表學生(idINT,的名字字符串,年齡INT)存儲作為獸人TBLPROPERTIES(“foo”=“酒吧”)評論“這是一個評論”;——創建分區表創建表學生(idINT,的名字字符串)分區通過(年齡INT)存儲作為獸人;——創建分區表有不同的條款創建表學生(idINT,的名字字符串)存儲作為獸人分區通過(年齡INT);——使用行格式和文件格式創建表學生(idINT,的名字字符串)行格式分隔字段終止通過”、“存儲作為文本文件;——使用複雜的數據類型創建外部表家庭(的名字字符串,朋友數組<字符串>,孩子們地圖<字符串,INT>,地址結構體<街:字符串,城市:字符串>)行格式分隔字段終止通過”、“逃了出來通過“\ \”集合項目終止通過“_”地圖鍵終止通過“:”行終止通過' \ n '零定義作為“foonull”存儲作為文本文件位置“/ tmp /家庭/”;——使用預定義的自定義SerDe創建表avroExample行格式SERDE“org.apache.hadoop.hive.serde2.avro.AvroSerDe”存儲作為INPUTFORMAT“org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat”OUTPUTFORMAT“org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat”TBLPROPERTIES(“avro.schema.literal”={”名稱空間”:“org.apache.hive”,“名稱”:“first_schema”,“類型”:“記錄”,“字段”:[{" name ": " string1”、“類型”:“字符串”},{" name ": " string2相等”、“類型”:“字符串”}]}’);——使用個性化定製SerDe(我們可能需要添加JAR xxx。jar的第一,以確保我們能找到serde_class,或者您可能會遇到的CLASSNOTFOUND異常)添加JAR/tmp/hive_serde_example。jar;創建外部表家庭(idINT,的名字字符串)行格式SERDE“com.ly.spark.serde.SerDeExample”存儲作為INPUTFORMAT“com.ly.spark.example.serde.io.SerDeExampleInputFormat”OUTPUTFORMAT“com.ly.spark.example.serde.io.SerDeExampleOutputFormat”位置“/ tmp /家庭/”;