hive刪除資料庫
① hive drop partition會不會刪除全部數據
ALTER TABLE DROP PARTITION 用於刪除table中某個PARTITION和其中的數據,主要是用於歷史數據的刪除。如果還想保留數據,就需要合並到另一個partition中。 刪除該partition之後,如果再insert該partition范圍內的值
② Hive分區表怎麼刪除一個新添加的欄位
聲明接受任意屬性,我們希望在一個表中修改以下語法。
ALTER TABLE name RENAME TO new_name
ALTER TABLE name ADD COLUMNS (col_spec[, col_spec ...])ALTER TABLE name DROP [COLUMN] column_name
ALTER TABLE name CHANGE column_name new_name new_type
ALTER TABLE name REPLACE COLUMNS (col_spec[, col_spec ...])
Rename To… 語句
下面是查詢重命名表,把 employee 修改為 emp。
hive> ALTER TABLE employee RENAME TO emp;
JDBC 程序
在JDBC程序重命名表如下。
import java.sql.SQLException;import java.sql.Connection;import java.sql.ResultSet; import java.sql.Statement;import java.sql.DriverManager;public class HiveAlterRenameTo {
private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";
public static void main(String[] args) throws SQLException {
// Register driver and create driver instance
Class.forName(driverName);
// get connection
Connection con = DriverManager.getConnection("jdbc:hive://localhost:10000/userdb", "", "");
// create statement
Statement stmt = con.createStatement();
// execute statement
stmt.executeQuery("ALTER TABLE employee RENAME TO emp;");
System.out.println("Table Renamed Successfully");
con.close();
}}
將該程序保存在一個名為HiveAlterRenameTo.java文件。使用下面的命令來編譯和執行這個程序。
$ javac HiveAlterRenameTo.java
$ java HiveAlterRenameTo
輸出
Table renamed successfully.
③ hive 怎麼在不刪除數據 的情況下,重新建表
insert overwrite table t_table1 select * from t_table1 where XXXX;
其中xxx是你需要保留的數據的查詢條件。
如果清空表,如下:
insert overwrite table t_table1 select * from t_table1 where 1=0;
④ Hive中怎樣強制刪除資料庫
insert overwrite table t_table1 select * from t_table1 where XXXX;
其中xxx是你需要保留的數據的查詢條件。
如果清空內表,如容下:
insert overwrite table t_table1 select * from t_table1 where 1=0;
⑤ hive中怎麼刪除表中的部分數據
工具:(1)HIVE;
(2)電腦;
(3)Xshell;
採用hdfs命令進行刪除表中的部分數據:
1、先使用hdfs查看該表實際分區以及數據目錄位置
hdfs dfs -ls /user/hive/warehouse/tbdata.db/表名小寫/;
⑥ 在hive中怎樣刪除一張有數據的外部表,包括刪除數據
Hive的數據管理:
(1)元數據存儲
Hive 將元數據存儲在 RDBMS 中,有三種模式可以連接到資料庫:
Single User Mode:此模式連接到一個 In-memory 的資料庫 Derby,一般用於 Unit Test。
Multi User Mode:通過網路連接到一個資料庫中,這是最常用的模式。
Remote Server Mode:用於非 Java 客戶端訪問元資料庫,在伺服器端啟動一個 MetaStoreServer,客戶端則利用 Thrift 協議通過 MetaStoreServer來訪問元資料庫。
(2)數據存儲
首先,Hive 沒有專門的數據存儲格式,也沒有為數據建立索引,用戶可以非常自由地組織 Hive 中的表,只需要在創建表的時候告訴 Hive 數據中的列分隔符和行分隔符,它就可以解析數據了。
其次,Hive 中所有的數據都存儲在 HDFS 中,Hive 中包含4種數據模型:Table、External Table、Partition、Bucket。
Hive 中的 Table 和資料庫中的 Table 在概念上是類似的,每一個 Table 在 Hive 中都有一個相應的目錄來存儲數據。例如,一個表 pvs,它在 HDFS 中的路徑為:/wh/pvs,其中,wh 是在 hive-site.xml 中由 ${hive.metastore.warehouse.dir} 指定的數據倉庫的目錄,所有的 Table 數據(不包括 External Table)都保存在這個目錄中。
Partition 對應於資料庫中Partition 列的密集索引,但是 Hive 中 Partition 的組織方式與資料庫中的很不相同。在 Hive 中,表中的一個 Partition 對應於表下的一個目錄,所有的 Partition 數據都存儲在對應的目錄中。例如:pvs 表中包含 ds 和 city 兩個 Partition,則對應於 ds = 20090801, city = US 的 HDFS 子目錄為:/wh/pvs/ds=20090801/city=US;對應於 ds = 20090801, city = CA 的 HDFS 子目錄為:/wh/pvs/ds=20090801/city=CA。
Buckets 對指定列計算 hash,根據 hash 值切分數據,目的是為了便於並行,每一個 Buckets對應一個文件。將 user 列分散至 32 個Bucket上,首先對 user 列的值計算 hash,比如,對應 hash 值為 0 的 HDFS 目錄為:/wh/pvs/ds=20090801/city=US/part-00000;對應hash 值為 20 的 HDFS 目錄為:/wh/pvs/ds=20090801/city=US/part-00020。
External Table 指向已經在 HDFS 中存在的數據,可以創建 Partition。它和 Table 在元數據的組織結構上是相同的,而在實際數據的存儲上則有較大的差異。
在Table 的創建過程和數據載入過程(這兩個過程可以在同一個語句中完成)中,實際數據會被移動到數據倉庫目錄中。之後對數據的訪問將會直接在數據倉庫的目錄中完成。刪除表時,表中的數據和元數據將會被同時刪除。
External Table 只有一個過程,因為載入數據和創建表是同時完成的。實際數據是存儲在 Location 後面指定的 HDFS 路徑中的,它並不會移動到數據倉庫目錄中。
(3)數據交換
數據交換主要分為以下幾個部分
⑦ hive中誤刪除了資料庫,怎麼恢復
--開啟行移動功能
alter table 表名 enable row movement;
--恢復表數據
flashback table 表名 to timestamp to_timestamp('2014-05-19 09:40:00','yyyy-mm-dd hh24:mi:ss');
上述時間為刪除數據的時間
備註:恢復後請關閉行移動功能
⑧ 刪除Hive分區中的某條記錄該如何操作用了以下語句總報錯
insert overwrite table t_table1 select * from t_table1 where XXXX;
其中xxx是你需要保留的數據的查詢條件。
如果清空表,如下:
insert overwrite table t_table1 select * from t_table1 where 1=0;
⑨ hive中怎樣刪除分區
准備好環境,小編這邊環境已經有了,就不講解如何搭建環境,畢竟搭建一套大數據需要一段時間的。
准備一個分區表
show partitions 表名
方法1:使用hive自帶sql語法進行刪除
alter table 表名 drop partition (etl_dt=20161118);
再次查看20161118分區還在不在,如果分區不在了,說明該分區已經被刪除,數據也已被清空。
show partitions 表名;
方法2:採用hdfs命令進行清空
這個表還剩下一個分區,咱們把這個分區也清空。
先使用hdfs查看該表實際分區以及數據目錄在哪
hdfs dfs -ls /user/hive/warehouse/tbdata.db/表名小寫/
或者
hadoop fs -ls /user/hive/warehouse/tbdata.db/表名小寫/
兩個命令效果一樣
使用hdfs命令刪除該分區20161124目錄
hdfs dfs -rm -r -f /user/hive/warehouse/tbdata.db/表名小寫/etl_dt=20161124
最後在查看沒有分區目錄了
最查看進hive命令行查看此表是否還有數據
⑩ hive誤刪了dhfs上的數據怎麼恢復
--開啟行移動功能
alter table 表名 enable row movement;
--恢復表數據
flashback table 表名 to timestamp to_timestamp('2014-05-19 09:40:00','yyyy-mm-dd hh24:mi:ss');
上述時間為刪除數據的時間
備註:恢復後請關閉行移動功能
,