Hive 中所有的数据都存储在 HDFS 中,Hive 中包含以下数据模型:
- 内部表(Table)
- 外部表(External Table)
- 分区(Partition)
- 桶(Bucket)。
一.内部表
- Table 将数据保存到Hive 自己的数据仓库目录中:/usr/hive/warehouse
- 每一个Table在Hive中数据仓库目录下都有一个相应的目录存储数据
- 所有的Table数据都存储在该目录
示例
# 创建表
create table if not exists aiops.appinfo (
appname string,
level string,
leader string,
appline string,
dep string,
ips array<string>
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ' '
COLLECTION ITEMS TERMINATED BY ',';
# 自定义文件和记录格式
# 使用create table创建表,最后使用保存成sequence格式[默认是text格式]
stored as sequencefile
# 数据库授权
grant create on database dbname to user hadoop;
#导入数据
# hive是读时检查,上传的数据文件一定要符合格式,mysql是写时检查
#hdfs中数据的导入,本质是就是文件的移动
load data inpath 'hdfs://hdfs-name/sure.csv' overwrite into table aiops.appinfo;
#本地导入,数据copy到hdfs中
load data local inpath '/home/hdfs/online_state1' overwrite into table online_state PARTITION (end_dt='99991231');
# 查看表结构
describe extended bgops;
describe bgops;
# 修改列名
## 这个命令可以修改表的列名,数据类型,列注释和列所在的位置顺序,FIRST将列放在第一列,AFTER col_name将列放在col_name后面一列