一、hive創建表的語句
創建表是Hive中最常見的任務之一。在Hive中,我們使用CREATE TABLE語句來創建一個新的表。下面是hive創建表的語句:
CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment], ...)] [COMMENT table_comment] [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] [CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS] [SKEWED BY (col_name, col_name, ...) ON ((col_value, col_value, ...), (col_value, col_value, ...), ...) [STORED AS DIRECTORIES]] [ROW FORMAT row_format] [STORED AS file_format] [LOCATION hdfs_path] [TBLPROPERTIES (property_name=property_value, ...)]
以上語句中,[]中的內容可以省略,而()中的內容必須填寫。下面分別對以上所用到的關鍵字進行詳細說明:
- TEMPORARY: 暫時性表,用於當前session
- EXTERNAL: 外部表,表的數據被存儲在Hive以外的位置
- IF NOT EXISTS: 如果表不存在,則創建表;否則不會創建
- table_name: 表名
- col_name: 列名
- data_type: 數據類型
- col_comment: 列注釋
- table_comment: 表注釋
- PARTITIONED BY: 分區鍵
- num_buckets: 分桶數量
- BUCKETS: 將表數據分成多個文件,用於並行處理加速
- SKEWED BY: 數據傾斜處理
- STORED AS DIRECTORIES: 在多個路徑中存儲文件
- row_format: 行數據格式
- file_format: 文件格式
- LOCATION: 表數據的存儲路徑
- TBLPROPERTIES: 表屬性,以key-value對形式存儲
二、hive創建表時選擇題
在Hive創建表時,可能會遇到不同的需求和情況,需要使用不同的語句和操作方式。以下是幾個選擇題,幫助你更好地理解Hive創建表。
1、創建一個臨時表,表名為table1,包含兩列,分別為col1和col2,數據類型分別為int和string:
CREATE TEMPORARY TABLE table1 (col1 int, col2 string);
2、創建一個外部表,表名為table2,數據存儲在「/user/hdfs/data/table2」路徑下,其中有兩列分別為col1和col2,數據類型分別為int和string:
CREATE EXTERNAL TABLE table2 (col1 int, col2 string) LOCATION '/user/hdfs/data/table2';
3、創建一個分區表,表名為table3,數據存儲在「/user/hdfs/data/table3」路徑下,包含兩列,其中一列為分區鍵partition_col,數據類型為string,另一列為value_col,數據類型為int:
CREATE TABLE table3 (value_col int) PARTITIONED BY (partition_col string) LOCATION '/user/hdfs/data/table3';
三、hive創建表命令
Hive創建表是一個常見的任務,下面是一些常用的Hive創建表命令。
1、創建一個包含兩列的表,其中一列為id,數據類型為int,另一列為name,數據類型為string,並且表名為table1:
CREATE TABLE IF NOT EXISTS table1 ( id INT, name STRING );
2、創建一個外部表,其中一列為id,數據類型為int,另一列為name,數據類型為string,表數據存儲在/user/hdfs/data/table2路徑中,並且表名為table2:
CREATE EXTERNAL TABLE IF NOT EXISTS table2 ( id INT, name STRING ) LOCATION '/user/hdfs/data/table2';
3、創建一個分區表,其中一列為id,數據類型為int,另一列為name,數據類型為string,並且表名為table3,分區鍵為ds和city:
CREATE TABLE IF NOT EXISTS table3 ( id INT, name STRING ) PARTITIONED BY (ds STRING, city STRING);
4、創建一個分桶表,其中一列為id,數據類型為int,另一列為name,數據類型為string,並且表名為table4,數據分為5個桶:
CREATE TABLE IF NOT EXISTS table4 ( id INT, name STRING ) CLUSTERED BY (id) INTO 5 BUCKETS;
四、hive創建表指定文件格式
Hive可以指定不同的文件格式來存儲表數據,以下是常見的幾種文件格式及創建語句。
1、創建一個存儲在Parquet格式文件中的表,其中一列為id,數據類型為int,另一列為name,數據類型為string:
CREATE TABLE IF NOT EXISTS parquet_table ( id INT, name STRING ) STORED AS PARQUET;
2、創建一個存儲在ORC格式文件中的表,其中一列為id,數據類型為int,另一列為name,數據類型為string:
CREATE TABLE IF NOT EXISTS orc_table ( id INT, name STRING ) STORED AS ORC;
3、創建一個存儲在SequenceFile格式文件中的表,其中一列為id,數據類型為int,另一列為name,數據類型為string:
CREATE TABLE IF NOT EXISTS seq_table ( id INT, name STRING ) STORED AS SEQUENCEFILE;
五、Hive創建表例子
以下是一些創建表的例子,包含了表的各種屬性設置:
1、創建一個外部表,其中一列為id,數據類型為int,另一列為name,數據類型為string,表數據存儲在/user/hdfs/data/table5路徑中,表名為table5:
CREATE EXTERNAL TABLE IF NOT EXISTS table5 ( id INT, name STRING ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE LOCATION '/user/hdfs/data/table5';
2、創建一個分區表,其中一列為id,數據類型為int,另一列為name,數據類型為string,表名為table6,分區鍵為dt和city,表數據存儲在/user/hdfs/data/table6路徑中:
CREATE TABLE IF NOT EXISTS table6 ( id INT, name STRING ) PARTITIONED BY (dt STRING, city STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE LOCATION '/user/hdfs/data/table6';
3、創建一個分桶表,其中一列為id,數據類型為int,另一列為name,數據類型為string,表名為table7,數據分為5個桶,數據存儲在/user/hdfs/data/table7路徑中:
CREATE TABLE IF NOT EXISTS table7 ( id INT, name STRING ) CLUSTERED BY (id) INTO 5 BUCKETS ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE LOCATION '/user/hdfs/data/table7';
六、hive創建表指定編碼格式
在Hive創建表時,可以指定表的編碼格式。以下是幾個常見的編碼格式及其創建語句。
1、創建一個UTF-8編碼格式的表,其中一列為id,數據類型為int,另一列為name,數據類型為string:
CREATE TABLE IF NOT EXISTS utf8_table ( id INT, name STRING ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE LOCATION '/user/hdfs/data/utf8_table' TBLPROPERTIES ( 'serialization.encoding'='UTF-8' );
2、創建一個GBK編碼格式的表,其中一列為id,數據類型為int,另一列為name,數據類型為string:
CREATE TABLE IF NOT EXISTS gbk_table ( id INT, name STRING ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE LOCATION '/user/hdfs/data/gbk_table' TBLPROPERTIES ( 'serialization.encoding'='GBK' );
七、hive創建表可以指定的幾種方式
Hive創建表的方式有多種,比較常見的有以下幾種:
- 使用命令行創建表: 在終端輸入Hive命令,使用CREATE TABLE語句創建表
- 使用腳本創建表: 將創建表的語句寫入腳本文件,然後通過hive -f file_name執行腳本
- 使用JDBC API創建表: 在Java或其他開發語言中,通過JDBC連接Hive,在Java中使用CREATE TABLE語句創建表
- 使用Apache HCatalog創建表: HCatalog是Apache Hadoop生態系統中的一部分,它提供了一種將數據從Hadoop存儲(比如HDFS)中提取到Hive元資料庫中的方式
以上就是關於Hive創建表的完整指南,包括常用的Hive創建表命令、創建表指定文件格式等內容。熟練掌握Hive創建表操作,對於數據分析、數據倉庫開發人員來說具有非常重要的意義。
原創文章,作者:NFPTN,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/361177.html