Hive建表詳解

一、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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-28 13:33
下一篇 2024-11-28 13:33

相關推薦

  • Hive Beeline連接報錯Connection Reset的解決方法

    對於Hive Beeline連接報錯Connection Reset,可以從以下幾個方面進行詳細解答。 一、檢查網絡連接 首先需要檢查機器與網絡連接是否穩定,可以Ping一下要連接…

    編程 2025-04-27
  • 如何刪除Hive的元數據統計信息

    本文將從以下幾個方面詳細闡述如何刪除Hive的元數據統計信息。 一、元數據統計信息是什麼? 元數據統計信息是相應數據表的統計信息,包括數據的行數、BLK(塊)和文件大小等。 Hiv…

    編程 2025-04-27
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁盤中。在執行sync之前,所有的文件系統更新將不會立即寫入磁盤,而是先緩存在內存…

    編程 2025-04-25
  • 神經網絡代碼詳解

    神經網絡作為一種人工智能技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網絡的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網絡模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • Python安裝OS庫詳解

    一、OS簡介 OS庫是Python標準庫的一部分,它提供了跨平台的操作系統功能,使得Python可以進行文件操作、進程管理、環境變量讀取等系統級操作。 OS庫中包含了大量的文件和目…

    編程 2025-04-25
  • 詳解eclipse設置

    一、安裝與基礎設置 1、下載eclipse並進行安裝。 2、打開eclipse,選擇對應的工作空間路徑。 File -> Switch Workspace -> [選擇…

    編程 2025-04-25
  • git config user.name的詳解

    一、為什麼要使用git config user.name? git是一個非常流行的分布式版本控制系統,很多程序員都會用到它。在使用git commit提交代碼時,需要記錄commi…

    編程 2025-04-25
  • Linux修改文件名命令詳解

    在Linux系統中,修改文件名是一個很常見的操作。Linux提供了多種方式來修改文件名,這篇文章將介紹Linux修改文件名的詳細操作。 一、mv命令 mv命令是Linux下的常用命…

    編程 2025-04-25
  • MPU6050工作原理詳解

    一、什麼是MPU6050 MPU6050是一種六軸慣性傳感器,能夠同時測量加速度和角速度。它由三個傳感器組成:一個三軸加速度計和一個三軸陀螺儀。這個組合提供了非常精細的姿態解算,其…

    編程 2025-04-25
  • Python輸入輸出詳解

    一、文件讀寫 Python中文件的讀寫操作是必不可少的基本技能之一。讀寫文件分別使用open()函數中的’r’和’w’參數,讀取文件…

    編程 2025-04-25

發表回復

登錄後才能評論