Hive SQL 之 資料庫

2021-09-23 22:35:41 字數 2098 閱讀 8749

1、 hive 中的資料庫本質是乙個目錄,通常資料庫儲存在hive.metastore.warehouse.dir所指定的目錄下,以.db為字尾,例如testdb.db,該資料庫中的表以這個資料庫目錄的子目錄存在。

注:default這個資料庫是hive預設的資料庫,若不指定資料庫,這預設使用該資料庫。該資料庫沒有自己的目錄,該資料庫中定義的表以hive.metastore.warehouse.dir指定目錄的子目錄形式存在。

2、 資料庫相關的操作

hive> create database testdb;

# 若testdb資料庫已經存在,則會丟擲錯誤資訊

# hive> create database testdb;

# failed: execution error, return code 1 from org.apache.hadoop.hive.ql.exec.ddltask. database test already exists

# 可以使用`if not exists`語句避免這種情況

hive> create database if not exists testdb;

hive> show databases;

# 顯示所有以my開頭的資料庫

hive> show databases like 'my.*'

hive> create database testdb2 

> location '/test/mydbs';

hive> create database test01

> comment 'holds all test tables';

oktime taken: 0.132 seconds

hive> describe database test01;

oktest01 holds all test tables hdfs://bigdata111:9000/user/hive/warehouse/test01.db root user

hive> create database test02

> with dbproperties(

> 'creator' = 'biglau',

> 'date' = '2019-05-29');

hive> describe database extended test02;

oktest02 hdfs://bigdata111:9000/user/hive/warehouse/test02.db root user

hive> use test01;
在hive中沒有巢狀資料庫的概念,所以可以重複使用use ...命名

所以可以通過設定乙個屬性值來在顯示當前所在資料庫

hive.cli.print.current.db=true,(hive v0.8.0 版本才支援)

hive> set hive.cli.print.current.db=true;

hive (test01)>

hive (test01)> drop databaseif exists test01;

moved: 'hdfs://bigdata111:9000/user/hive/warehouse/test01.db' to trash at: hdfs://bigdata111:9000/user/root/.trash/current

id exists子句是可選的,加了這個語句可以避免因資料庫不存在而丟擲警告資訊。

預設情況下,hive不允許刪除乙個包含有表的資料庫。這種情況要麼先刪除資料庫中的表,然後再刪除資料庫;要麼在刪除命令的最後加上cascade,這樣可以使hive自行刪除資料庫的表。資料庫刪除了,其對應的目錄也會被刪除。

資料庫 HIVE SQL索引及其使用

最近在用一張8億資料量表作為主表去關聯乙個千萬量級的表時遇到乙個問題,job執行的特別慢,而且大量的時間花費在了大表的查詢上。如何解決這個問題,首先想到是不是由於資料偏移造成的,對應了各種資料偏移的場景,最後認定不是資料偏移造成的。那怎麼辦呢?後來想到用索引!由於對於索引不是特別了解,查了各種資料,...

資料庫 HIVE SQL之JSON字串解析的坑

對於hive對json字串的解析小白在之前博文中已經有兩篇做過詳細的介紹了,這邊博文主要記錄一下,小白在工作中遇到的乙個例項,巨坑。案例如下 一眼看上去,是不是符合json字串的風格,然後就開始解析 select filters,id,index,name,type from aa lateral ...

資料庫 HIVE SQL 增刪改查方法

目錄 1 展示乙個表的分割槽 2 檢視乙個job的原 3 修改乙個表中某個欄位的描述 4 刪除分割槽 5 修改表名 6 新增一列 7 修改列的屬性 8 新增分割槽 9 刪除表 10 根據乙個已存在的表,新建乙個結構一樣的表 show partitions dw htlbizdb.userlibrar...