hive中有乙個預設的庫:庫名: default
庫目錄:hdfs://hdp20-01:9000/user/hive/warehouse
create database db_order;
庫建好後,在hdfs中會生成乙個庫目錄:
hdfs://hdp20-01:9000/user/hive/warehouse/db_order.db
use db_order;
create table t_order(id string,create_time string,amount float,uid string);
表建好後,會在所屬的庫目錄中生成乙個表目錄
/user/hive/warehouse/db_order.db/t_order
只是,這樣建表的話,hive會認為表資料檔案中的字段分隔符為 ^a(\001)
正確的建表語句為:
create table t_order(id string,create_time string,amount float,uid string)
row format delimited
fields terminated by ',';
這樣就指定了,我們的表資料檔案中的字段分隔符為 ","
注意:hive
是不會檢查使用者匯入表中的資料的!如果資料的格式跟表定義的格式不一致,
hive
也不會做任何處理(能解析就解析,解析不了就是
null
);drop table t_order;
刪除表的效果是:
hive會從元資料庫中清除關於這個表的資訊;
hive還會從hdfs中刪除這個表的表目錄;
內部表(managed_table):表目錄按照hive的規範來部署,位於hive的倉庫目錄/user/hive/warehouse中
外部表(external_table):表目錄由建表使用者自己指定
create external table t_access(ip string,url string,access_time string)
row format delimited
fields terminated by ','
location '/access/log';
外部表和內部表的特性差別:
內部表的目錄在hive的倉庫目錄中 vs 外部表的目錄由使用者指定
乙個hive的資料倉儲,最底層的表,一定是來自於外部系統,為了不影響外部系統的工作邏輯,在hive中可建external表來對映這些外部系統產生的資料目錄;
然後,後續的etl操作,產生的各種中間表建議用managed_table(內部表)
分割槽表的實質是:在表目錄中為資料檔案建立分割槽子目錄,以便於在查詢時,
mr程式可以針對指定的分割槽子目錄中的資料進行處理,縮減讀取資料的範圍,提高效率!
比如,**每天產生的瀏覽記錄,瀏覽記錄應該建乙個表來存放,但是,有時候,我們可能只需要對某一天的瀏覽記錄進行分析
這時,就可以將這個表建為分割槽表,每天的資料匯入其中的乙個分割槽;
當然,每日的分割槽目錄,應該有乙個目錄名(分割槽字段)
create table t_access(ip string,url string,access_time string)
partitioned by(dt string)
row format delimited
fields terminated by ',';
注意:分割槽字段不能是表定義中的已存在字段
load data local inpath '/root/access.log.2017-08-04.log' into table t_access partition(dt='20170804');
load data local inpath '/root/access.log.2017-08-05.log' into table t_access partition(dt='20170805');
a、統計8
月4號的總pv:
select count(*) from t_access where dt='20170804';
實質:就是將分割槽字段當成表字段來用,就可以使用where
子句指定分割槽了
b、統計表中所有資料總的pv:
select count(*) from t_access;
實質:不指定分割槽條件即可
可以通過已存在表來建表:
create table t_user_2 like t_user;
新建的t_user_2表結構定義與源表t_user一致,但是沒有資料
create table t_access_useras
select ip,url from t_access;
補充:將查詢出來的資料儲存到一張表中:
t_access_user
會根據select
查詢的字段來建表,同時將查詢的結果插入新錶中!
方式1:create t_x as select .......
方式2:
如果事先存在一張表t_x
可以將select查詢出來的結果資料insert到這張已存在的表中;
insert into t_x select .......
不同型別的作業系統
據我了解,作業系統分為 windows windows98,windowsnt,windows2003,windows xp,win7,win8等 unix ibm ax,hp hp ux,sun solaris.bsd.linux 由unix擴充套件而來的。ubuntu,centos,redhat...
不同型別的檔案
cpp檔案 cpp是用c 語言編寫的源 檔案的字尾 具體實現 h檔案 h是c語言和c 語言的標頭檔案 函式宣告,巨集定義,函式原型 pde檔案 一共有4種可能,分別為 1 powerdesk encrypted file 2 pathology data exchange file 3 afp pa...
oracle sql 中不同型別的表連線
1 full join 2 inner join 3 outer join left outer join right outer join full join 匹配的結果與所有左邊的表中不匹配右邊的行和右邊的表中所有不匹配左邊的行加在一起,在不匹配的地方使用null代替。結果行數 匹配行數 左表剩...