一、hive建表語句
在Hive中,可以通過CREATE TABLE語句來創建一張表。基本語法如下:
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] [ROW FORMAT row_format] [STORED AS file_format] [LOCATION hdfs_path] [TBLPROPERTIES (property_name=property_value, ...)]
其中,TEMPORARY指定表為臨時表,EXTERNAL指定表的數據是外部數據,IF NOT EXISTS在表已經存在時不會重新創建,COMMENT用於添加表的注釋,PARTITIONED BY用於分區,CLUSTERED BY和SORTED BY用於排序,ROW FORMAT表示數據的行格式,STORED AS表示數據的存儲格式,LOCATION指定存儲的位置,TBLPROPERTIES用於添加表的其他屬性。
二、在hive中怎麼建表
在Hive中,可以通過以下步驟來建表:
1、打開命令行終端或者通過圖形化界面打開Hive。
2、使用USE命令選擇要使用的數據庫。
USE database_name;
3、使用CREATE TABLE語句來創建表。
CREATE TABLE table_name( column1_name column1_type, column2_name column2_type, ...) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' //使用tab作為分隔符 LINES TERMINATED BY '\n' //使用換行符作為行分隔符 STORED AS TEXTFILE; //存儲格式為TEXT文件
4、在表中插入數據。
INSERT INTO table_name VALUES(value1, value2, ...);
三、hive建表分隔符
在Hive中,通過ROW FORMAT DELIMITED指定分隔符。可以使用除了特殊字符和ASCII碼以外的任意字符作為分隔符。常用的分隔符有逗號、製表符、豎線、空格等,如果要指定其他分隔符則需要加上ESCAPED BY關鍵字。
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' ESCAPED BY '\\' LINES TERMINATED BY '\n'
四、hive建表指定存儲格式
在Hive中,可以通過STORED AS指定存儲格式。
例如,存儲為TEXT文件的示例:
CREATE TABLE table_name( column1_name column1_type, column2_name column2_type, ...) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' STORED AS TEXTFILE;
存儲為AVRO文件的示例:
CREATE TABLE table_name( column1_name column1_type, column2_name column2_type, ...) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' STORED AS AVRO;
五、hive建表報錯
在Hive中,創建表時可能會遇到各種錯誤。常見的錯誤有:
表名已經存在,部分字段類型不匹配,分隔符和存儲格式不匹配等。當遇到錯誤時可以看看錯誤提示,嘗試修改代碼或者重啟Hive。
六、hive建表分區
Hive中的分區是將一張表的數據分散存儲在不同的目錄中,方便查找和處理。
如下是對錶按時間分區的示例:
CREATE TABLE table_name( column1_name column1_type, column2_name column2_type, ...) PARTITIONED BY (date_partition string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' STORED AS TEXTFILE;
插入數據時,需要指定分區:
INSERT INTO TABLE table_name PARTITION (date_partition='2019-01-01') VALUES (value1, value2, ...)
七、查找hive建表日期
在Hive中,可以使用內置函數date_format來格式化日期,例如將”20220101″格式化為”2022-01-01″:
SELECT date_format('20220101', 'yyyy-MM-dd') as date;
八、hive建表指定序列化
在Hive中,可以通過SERDE指定序列化方式。
例如,使用JSON格式序列化的示例:
CREATE TABLE table_name( column1_name column1_type, column2_name column2_type, ...) ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe' STORED AS TEXTFILE;
九、hive建表語句詳解
CREATE TABLE語句是Hive中創建表的最基本的語法。語法結構非常靈活,可以通過不同的參數來滿足不同的需求。
例如:
1、創建外部表:
CREATE EXTERNAL TABLE table_name( column1_name column1_type, column2_name column2_type, ...) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' LOCATION 'hdfs://localhost:8020/user/hadoop/external_data/';
2、分區表:
CREATE TABLE table_name( column1_name column1_type, column2_name column2_type, ...) PARTITIONED BY (date_partition string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' STORED AS TEXTFILE;
3、使用Bucket:
CREATE TABLE table_name( column1_name column1_type, column2_name column2_type, ...) CLUSTERED BY (column1_name) INTO 4 BUCKETS ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' STORED AS TEXTFILE;
總之,Hive建表語句非常靈活,可以根據不同的需求進行不同的設置。例如,可以指定分隔符、存儲格式、分區等,來滿足不同的業務需求。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/188724.html