一、直接建表
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] employee_external ( //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>>
)
COMMENT 'This is an external table' //对表的注释
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '|' //如何分隔列(字段)
COLLECTION ITEMS TERMINATED BY ',' //如何分隔集合和映射
MAP KEYS TERMINATED BY ':'
STORED AS TEXTFILE //文件存储格式
LOCATION '/user/root/employee'; // 数据存储路径(HDFS)
准备数据
建表
create table if not exists test1(
id int,
name string
)
row format delimited
FIELDS TERMINATED BY ',';
装载数据
load data local inpath '/data/test.txt' overwrite into table test1;
查看表
建表完成
二、查询建表
将一条查询语句的结果作为一个表的内容创建
建表语句
create table 表名 as 查询语句;
建表
create table test2 as select * from test1;
查看表2
三、like建表
该方法只能创建表的结构 不能创建数据
建表语法
creat table 表名 like 现有表的表名;
建表
create table test3 like test1;
查看表
并没有数据
通过desc命令查看表的状态
只有表结构 表数据需要后期再次添加