Hive原始数据类型
| Type | Example |
|---|---|
| tinyint | 10Y |
| smallint | 10S |
| int | 10 |
| bigint | 10L |
| float | 3.14 |
| double | 3.14 |
| decimal | 3.14 |
| binary | 1010 |
| boolean | true |
| char | 'a' or "a" |
| varchar | 'a' or "a" |
| string | 'yes' or "yes" |
| date | '2018-07-21' |
| timestamp | '2018-09-21 10:25:12.123' |
复杂数据类型
| Type | Example | Define | Example |
|---|---|---|---|
| array | ['a', 'b', 'c'] | array<string> | a[0]='a' |
| map | {'name':'steven','gender':'male'} | map<string,string> | m['name']='steven' |
| struct | {'apple',1} | struct<fruit:string, weight:int> | s.fruit='orange' |
基本建表语句
create external table if not exists employee_external(
name string,
work_place array<string>,
sex_age struct<sex:string,age:int>,
skills_score map<string,int>,
depart_title map<string,array<string>>
)
row format delimited
fields terminated by '|'
collection items terminated by ','
map keys terminated by ':'
stored as textfile
location '/temp/data/employee'
tblproperties("skip.header.line.count"="1")
高级建表语句
- CTAS -- create table as select
create table temp_users as select * from employee_external;
- create table like another table (fast)
create table employee_external_01 like employee_external;
- CTAS with Common Table Expression(CTE)
create table cte_employee_external as
with
r1 as (select name from r2 where name='steven')
r2 as (select name from employee_external where sex_age.sex='male')
r3 as (select name from employee_external where sex_age.sex='female')
select * from r1 union all select * from r3;
注: CTAS不能创建分区表,分桶表,外表
- 创建临时表
create temporary table temp_user_01(name string);
create temporary table temp_user_02 as select * from users;
create temporary table temp_user_03 like users;
注:
往hive表中导入数据
// 把本地数据复制到users表中(追加)
load data local inpath '/root/data/users.csv' into table users;
// 把本地数据复制到users表中(覆盖)
load data local inpath '/root/data/user.csv' overwrite into table users;
// 把HDFS中的数据移动到users表中(追加)
load data inpath '/temp/data/users.csv' into table users;
// 把HDFS中的数据移动到users表中(覆盖)
load data inpath '/temp/data/users.csv' overwrite into table users;









网友评论