用蜂巢創建表的格式

適用於:檢查標記是的磚運行時

定義一個表使用蜂巢格式。

語法

創建(外部](如果存在]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_commentTBLPROPERTIES

請注意

在磚上麵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。此外,您可以指定自己的輸入和輸出格式INPUTFORMATOUTPUTFORMAT。唯一的格式文本文件,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_examplejar;創建外部家庭(idINT,的名字字符串)格式SERDE“com.ly.spark.serde.SerDeExample”存儲作為INPUTFORMAT“com.ly.spark.example.serde.io.SerDeExampleInputFormat”OUTPUTFORMAT“com.ly.spark.example.serde.io.SerDeExampleOutputFormat”位置“/ tmp /家庭/”;