Hive 數據庫倉庫的基本操作
查看hive中的數據庫
Show databases;
查看hive中的表
Show tables;
查看錶結構信息
DESCRIBE table_name;
創建表:
CREATE TABLE daxiong (id INT, name STRING);
創建一個新表daxiong1,結構與daxiong一樣
Create table daxiong1 like daxiong;
創建分區表
create table logs(ts bigint,line string) partitioned by (dt String,country String);
加載表數據
(從linux(ext3/ext4文件系統到hive))
a文件之間是空格,b文件之間是tab鍵;一會看結果。
hive> create table ha(id int,name string)
> row format delimited
> fields terminated by '\\t'
> stored as textfile;
OK
Time taken: 0.28 seconds
注:[ROW FORMAT DELIMITED]關鍵字,是用來設置創建的表在加載數據的時候,支持的列分隔符。
[STORED AS file_format]關鍵字是用來設置加載數據的數據類型,默認是TEXTFILE,如果文件數據是純文本,就是使用 [STORED AS TEXTFILE],然後從本地直接拷貝到HDFS上,hive直接可以識別數據。
從HDFS上導入數據到Hive表
從linux上傳到hdfs上:
load data inpath '/user/c' into table ha;
導出到本地文件系統
insert overwrite local directory '/home/hdfs/d' select * from ha;
導出到HDFS中
insert overwrite directory '/user/d select * from ha;
查看:
Hive連接hbase(數據傳輸)
建立一個表格classes具有1個列族user
create 'classes','user'
查看錶的構造
describe 'classes‘
加入數據
put 'classes','001','user:name','jack'put 'classes','001','user:age','20' put 'classes','002','user:name','liza' put 'classes','002','user:age','18'
查看classes中的數據
scan 'classes'
創建外部hive表,查詢驗證:
create external table classes(id int, name string, age int) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,user:name,user:age") TBLPROPERTIES("hbase.table.name" = "classes");
select * from classes;
再添加數據到Hbase
put 'classes','003','user:age','1820183291839132'
scan 'classes'
Hive查詢,看看新數據
select * from classes;
null,因爲3沒有name,所以補位Null,而age爲Null是因爲超過最大值,截圖中有驗證
上述演示了在hbase中添加數據,在hive中就會產生新的數據,下面是在hive中創建hbase連接表,在hbase中就會自動生成一個與hive中同名的表,hive中表的數據發生變化,在hbse中也會發生同樣的變化。