最近一段時間因工作需要接觸了一些hive上的使用!當然大部分都是比較基本的使用,僅當入門!各位看到有不足之處望多多指正!
廢話不多說,開始:
首先是創建數據庫
create database ‘數據庫名稱’
創建外部表(大部分時候我使用的是外部表):
CREATE EXTERNAL TABLE tmp.lng_lat(
lng string,
lat string)
ROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
WITH SERDEPROPERTIES (
'field.delim'=',',
'line.delim'='\n',
'serialization.format'=',')
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
'/user/guojienan/tmp/tmp1/lng_lat'
注意 “ ' ” 並不是引號 是鍵盤左上角的 “ ~ ” 號!
LOCATION
'/user/guojienan/tmp/tmp1/lng_lat'
是指外表存放路徑!
停用臨時表
drop table 數據庫名稱.表名
查看建表語句:
show create table
插入數據:
向外表插入數據
insert into table tmp.tmp_xiaoqutong
SELECT(查詢語句) from
直接數據插入分區
INSERT INTO TABLE test_olap_event PARTITION (date='2018-01-19',hour='02') values('1',88888888,7777777)
覆蓋插入
INSERT
OVERWRITE TABLE test_olap_event PARTITION (date='2018-01-19',hour='02') values('1',88888888,7777777)
連接函數的一點用法
concat、concat_ws、group_concat函數用法
一、concat()函數可以連接一個或者多個字符串
CONCAT(str1,str2,…) 返回結果為連接參數產生的字符串。如有任何一個參數為NULL ,則返回值為 NULL。
select concat('11','22','33'); 112233
二、CONCAT_WS(separator,str1,str2,...)
是CONCAT()的特殊形式。第一個參數是其它參數的分隔符。分隔符的位置放在要連接的兩個字符串之間。分隔符可以是一個字符串,也可以是其它參數。
select concat_ws(',','11','22','33'); 11,22,33
三、group_concat()分組拼接函數
group_concat([DISTINCT] 要連接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])
對下面的一組數據使用 group_concat()
| id |name
|1 | 10|
|1 | 20|
|1 | 20|
|2 | 20|
|3 | 200 |
|3 | 500 |
1、select id,group_concat(name) from aa group by id;
|1 | 10,20,20|
|2 | 20 |
|3 | 200,500|
2、select id,group_concat(name separator ';') from aa group by id;
|1 | 10;20;20 |
|2 | 20|
|3 | 200;500 |
3、select id,group_concat(name order by name desc) from aa group by id;
|1 | 20,20,10 |
|2 | 20|
|3 | 500,200|
4、select id,group_concat(distinct name) from aa group by id;
|1 | 10,20|
|2 | 20 |
|3 | 200,500 |
