HIVE命令

2020-08-28 remember2668

1 資料庫的增刪改查

1.1 創建資料庫

(1)創建一個資料庫,資料庫在 HDFS 上的默認存儲路徑是/user/hive/warehouse/*.db。

hive (default)> create database db_hive;

(2)避免要創建的資料庫已經存在錯誤,增加 if not exists 判斷。

hive (default)> create database db_hive;FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask.Database db_hive already existshive (default)> create database if not exists db_hive;


查看hdfs網頁的儲存路徑(hadoop111:50070)-- hadoop完全分布式集群

(3)創建一個資料庫,指定資料庫在 HDFS 上存放的位置

hive (default)> create database db_hive2 location &39;;


查看db_hive2.db資料庫是否創建成功

1.2 查詢資料庫

1.2.1 顯示資料庫

1、顯示資料庫

2、過濾顯示查詢的資料庫

1.2.2 查看資料庫詳情

1、顯示資料庫信息

2、顯示資料庫詳細信息,extended

1.2.3 切換當前資料庫

1.3 修改資料庫

用戶可以使用 ALTER DATABASE 命令為某個資料庫的 DBPROPERTIES 設置鍵-值對屬性

值,來描述這個資料庫的屬性信息。資料庫的其他元數據信息都是不可更改的,包括資料庫

名和資料庫所在的目錄位置。

1.4 刪除資料庫

1.刪除空資料庫

hive (db_hive)> drop database db_hive2;

2.如果刪除的資料庫不存在,最好採用 if exists 判斷資料庫是否存在

hive> drop database db_hive;FAILED: SemanticException [Error 10072]: Database does not exist:db_hivehive> drop database if exists db_hive2;

3.如果資料庫不為空,可以採用 cascade 命令,強制刪除

hive> drop database db_hive;FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask.InvalidOperationException(message:Database db_hive is not empty.One or more tables exist.)hive> drop database db_hive cascade;

2 創建內部表

2.1 內部表定義

默認創建的表都是所謂的管理表,有時也被稱為內部表。因為這種表,Hive 會(或多

或少地)控制著數據的生命周期。Hive 默認情況下會將這些表的數據存儲在由配置項

hive.metastore.warehouse.dir(例如/user/hive/warehouse)所定義的目錄的子目錄下。當

我們刪除一個管理表時,Hive 也會刪除這個表中數據。管理表不適合和其他工具共享數據。

2.2 創建文件夾

1、在/home/data 創建一個 student.txt文件

[root@hadoop111 ~] cd /home/data

用vim命令輸入數據或用txt文件格式上傳至虛擬機

2.3 創建內部表

1、在 banzhang資料庫中創建 student表

2、查看創建的表

3、向內部表 student 導入數據

4、查詢結果

5、查詢表的類型(格式化數據)

3 外部表

3.1 外部表定義

因為表是外部表,所以 Hive 並非認為其完全擁有這份數據。刪除該表並不會刪除掉這

份數據,不過描述表的元數據信息會被刪除掉。

3.2 創建外部表

1、創建部門表

2、創建員工表

3、查看創建的表

4、向外部表導入數據

hive (default)> load data local inpath &39; into tabledefault.dept;hive (default)> load data local inpath &39; into tabledefault.emp;

5、查詢結果

3.3 內部表和外部表的相互轉換

1、查詢表的類型

2、修改內部表 student轉化為外部表

3、查看表的類型

4、將外部表 student 轉化為內部表

hive(banzhang)> alter table student set tblproperties(&39;=&39;);

5、查詢表的類型

4 分區表

4.1 分區表定義

分區表實際上就是對應一個 HDFS 文件系統上的獨立的文件夾,該文件夾下是該分區所

有的數據文件。Hive 中的分區就是分目錄,把一個大的數據集根據業務需要分割成小的數

據集。在查詢時通過 WHERE 子句中的表達式選擇查詢所需要的指定的分區,這樣的查詢效

率會提高很多。

4.2 創建分區表

1、創建表

hive (default)> create table dept_partition(deptno int, dname string, loc string)partitioned by (month string)row format delimited fields terminated by &39;;

2、加載數據到分區表中

hive (default)> load data local inpath &39; into table default.dept_partitionpartition(month=&39;);hive (default)> load data local inpath &39; into table default.dept_partitionpartition(month=&39;);hive (default)> load data local inpath &39; into table default.dept_partitionpartition(month=&39;);

3、查詢分區表數據

(1)單分區查詢

hive (default)> select * from dept_partition where month=&39;;

(2)多分區查詢

hive (default)> select * from dept_partition where month=&39;union select  * from dept_partition where month=&39;union select * from dept_partition where month=&39;;

4.3 增加分區

1、創建單個分區

hive (default)> alter table dept_partition add partition(month=&39;);

2、同時創建多個分區

hive (default)> alter table dept_partition add partition(month=&39;) partition(month=&39;);

4.4 刪除分區

1、刪除單個分區

hive (default)> alter table dept_partition drop partition(month=&39;);

2、同時刪除多個分區

hive (default)> alter table dept_partition drop partition(month=&39;),partition (month=&39;);

註:刪除多個分區有逗號連接,而增加多個分區沒有逗號連接

4.5 查看分區表分區的個數

語法:show partitions 表名;

4.6 查詢分區表結構

hive> desc formatted dept_partition;

5 分桶表

5.1 分桶表定義

分區針對的是數據的存儲路徑;分桶針對的是數據文件。分區提供一個隔離數據和優化

查詢的便利方式。不過,並非所有的數據集都可形成合理的分區,特別是之前所提到過的要

確定合適的劃分大小這個疑慮。而分桶是將數據集分解成更容易管理的若干部分的另一個集

術。

5.2 直接導入數據文件的方式

1、創建分桶表

hive (default)> create table stu_buck(id int, name string)clustered by(id) into 4 bucketsrow format delimited fields terminated by &39;;

2、查看表結構

hive (default)> desc formatted stu_buck;Num Buckets: 4

3、導入數據到分桶表中(並沒有分成 4 個桶)

hive (default)> load data local inpath &39; into table stu_buck;

5.3 的查詢的方式導入

1、先建一個普通的 stu 表

hive (default)> create table stu(id int, name string)row format delimited fields terminated by &39;;

2、向普通的 stu 表中導入數據

hive (default)> load data local inpath &39; into table stu;

3、清空 stu_buck 表中數據

hive (default)> truncate table stu_buck;hive (default)> select * from stu_buck;

4、將 stu 表中的數據導入到分桶表,通過子查詢的方式

hive (default)> insert into table stu_buck select id, name from stu;

5、發現還是只有一個分桶,如下圖所

6、需要設置一個屬性

7、查詢分桶的數據(因為之前採用直接導入數據的方式,已經將/opt/module/data/stu.txt

導入到 stu_buck 表裡面,之後採用子查詢的方式又導入數據一遍,所以有重複的數據。)

5.4 分桶抽樣查詢

註:tablesample 是抽樣語句,語法:TABLESAMPLE(BUCKET x OUT OF y) 。

y 必須是 table 總 bucket 數的倍數或者因子。hive 根據 y 的大小,決定抽樣的比例。

例如,table 總共分了 4 份,當 y=2 時,抽取(4/2=)2 個 bucket 的數據。x 表示從哪個 bucket 開始抽取,如果需要取多個分區,以後的分區號為當前分區號加上 y。例如,table 總 bucket 數為 4,tablesample(bucket 1 out of 2),表示總共抽取(4/2=2) 個 bucket 的數據,抽取第 1(x)個和第 3(x+y)個 bucket 的數據。注意:x 的值必須小於等於 y 的值,否則 FAILED:SemanticException [Error 10061]: Numerator should not be bigger than denominator in sample clause for table

stu_buck

相關焦點

  • Hive學習筆記,看懂 Hive
    /hive -f /opt/module/datas/hivef.sql(3)執行文件中的sql語句並將結果寫入文件中 bin/hive -f /opt/module/datas/hivef.sql  > /opt/module/datas/hive_result.txtHive其他命令操作
  • Hive的學習,Hive的DDL和DML
    :9000/user/hive/warehouse/db_hive.db atguiguUSER切換當前資料庫hive (default)> use db_hive;修改資料庫用戶可以使用ALTER DATABASE命令為某個資料庫的
  • CentOS+Hadoop+MySQL安裝Hive
    第三步:安裝MySQL-server-5.1.73-1.glibc23.x86_64.rpm輸入命令:rpm -ivh MySQL-server-5.1.73-1.glibc23.x86_64.rpm在安裝過程中可能用遇到安裝衝突,查看衝突的軟體包,並把衝突的軟體包卸載:rpm -e mysql-libs-5.1.73-7.el6.x86_64
  • Hive分區表
    hive> create database test;hive> use test;hive> create table tbl_user (id bigint,username string comment '用戶名')partitioned by (country string comment '國家', state
  • Hive是什麼
    那麼為什麼又離不開hive呢?因為hive的離線計算最穩定,更重要的是現在絕大部分計算引擎都是基於hive的元數據管理。下面談談hive需要掌握哪些知識。Hive是大數據領域離線執行必不可少的引擎。用戶寫sql可以在Hadoop集群上分布式執行。執行方式可以選擇MR或者Tez。
  • 大數據兵器譜之hive數據倉庫
    就是存進來後幾乎不需要對數據進行修改的情況,然後我們可以將數據用來做各種分析,相當於是一種靜態的不會再改變的數據了,如果還需要經常變化的數據是不適合使用hive來進行存儲管理的(因平臺不讓發網址,所以以後不再提供地址,請自行搜索,一般全英文的就是官網咯);部署步驟1、上傳文件包至主控節點;2、使用tar命令解壓文件,然後將其挪到/opt下例如:mv hive
  • hive學習筆記之九:基礎UDF
    >上述pom.xml中排除了pentaho-aggdesigner-algorithm,是因為從maven倉庫下載不到這個庫,為了能快速編譯我的java代碼,這種排除的方式是最簡單的,畢竟我用不上(另一種方法是手動下載此jar,再用maven install命令部署在本地
  • 如何使用docker快速搭建hive環境
    寫在前面想練練Hive SQL,但是沒有hive shell環境。現在只有一臺空的CentOS 7機子,一想要弄jdk、hadoop、mysql、hive就頭疼。部署hive使用hive命令行收尾工作安裝docker要用到docker和docker-compose,我們依次來安裝
  • 大數據實踐HIVE詳解
    (2)hive事務的特點與局限性從hive的0.14版本開始支持低等級的事務支持事務的增刪改查,從hive的2.2版本開始,開始支持merge不支持事務的begin、commit以及rollback(事務的回滾)不支持使用update更新分桶列和分區列想使用事務的話,文件格式必須是ORC需要壓縮工作,需要時間,資源和空間支持S(共享鎖)和X(排它鎖)不允許從一個非ACID連接寫入/讀取ACID表(3
  • hive學習筆記之四:分區表
    學習筆記》系列的第四篇,要學習的是hive的分區表,簡單來說hive的分區就是創建層級目錄的一種方式,處於同一分區的記錄其實就是數據在同一個子目錄下,分區一共有兩種:靜態和動態,接下來逐一嘗試;靜態分區(單欄位分區)先嘗試用單個欄位分區,
  • Hive的學習,Hive的查詢與自定義函數
    (default)> set hive.enforce.bucketing=true;hive (default)> set mapreduce.job.reduces=-1;hive (default)> insert into table stu_buckselect id, name from stu;
  • hive學習筆記之八:Sqoop
    及配套源碼,涉及Java、Docker、Kubernetes、DevOPS等;關於SqoopSqoop是Apache開源項目,用於在Hadoop和關係型資料庫之間高效傳輸大量數據,本文將與您一起實踐以下內容:部署Sqoop用Sqoop將hive
  • HIVE的安裝與配置
    (2)hive官網地址:http://hive.apache.org/(3)hive下載地址:http://archive.apache.org/dist/hive/(4)我的hive版本是下載的apache-hive-1.2.1-bin.tar.gz(5)mysql版本:MySQL-5.5.60-1.el6.x86_64.rpm-bundle.tar
  • hive學習筆記之十一:UDTF
    ;import org.apache.hadoop.hive.ql.exec.UDFArgumentException;import org.apache.hadoop.hive.ql.exec.UDFArgumentLengthException;import org.apache.hadoop.hive.ql.metadata.HiveException;import org.apache.hadoop.hive.ql.udf.generic.GenericUDTF
  • 數倉工程師的利器-HIVE詳解
    其中,CLI為shell命令行;JDBC/ODBC是Hive的JAVA實現,與傳統資料庫JDBC類似;WebGUI是通過瀏覽器訪問Hive。名字,表的列和分區及其屬性,表的屬性(是否為外部表等),表的數據所在目錄等。解釋器、編譯器、優化器完成 HQL 查詢語句從詞法分析、語法分析、編譯、優化以及查詢計劃的生成。
  • 大數據之Hive安裝配置
    hive默認將元數據存儲到本地內嵌的Derby資料庫中,但是Derby不支持多會話連結,因此我們使用mysql資料庫來存儲hive的元數據。配置完成hiveSQL的元資料庫之後再開始安裝、配置hive。
  • 什麼是hive?一篇文章講解清楚
    開門見山,什麼是hive?一個 Hadoop 的客戶端。hive能做什麼?hive是基於Hadoop的一個數據倉庫工具用來進行數據提取、轉化、加載,這是一種可以存儲、查詢和分析存儲在Hadoop中的大規模數據的機制。hive數據倉庫工具能將結構化的數據文件映射為一張資料庫表,並提供SQL查詢功能,能將SQL語句轉變成MapReduce任務來執行。
  • 0011-如何在Hive&Impala中使用UDF
    採用sudo權限的ec2-user用戶進行操作2.UDF函數開發使用Intellij工具開發Hive的UDF函數,進行編譯;1.使用Intellij工具通過Maven創建一個Java工程2.pom.xml文件中增加Hive包的依賴<dependency><groupId>org.apache.hive
  • hive學習筆記之三:內部表和外部表
    > show databases like 't*';OKtesttest001Time taken: 0.016 seconds, Fetched: 2 row(s)describe database命令查看此資料庫信息
  • hive學習筆記之七:內置函數
    https://github.com/zq2599/blog_demos內容:所有原創文章分類和匯總,及配套源碼,涉及Java、Docker、Kubernetes、DevOPS等;本篇概覽本文是《hive