Hive内部表

x33g5p2x  于2021-03-14 发布在 Hive  
字(2.0k)|赞(0)|评价(0)|浏览(198)

[warning] 内部表:是常用的一种Hive表类型,数据其实是存储在HDFS上的,而且是导入的。

[success] 实验环境:完全分布式--bigdata1

[info] (1)基本操作

# 创建数据库
create database liuyw;

# 查看数据库
show databases;

# 使用数据库
use liuyw;

[info] (2)创建表

# 创建内部表
create table liuywtable (
num int,
name String,
salary String,
destination String
)
COMMENT 'liuywtable table' ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
STORED AS TEXTFILE;
# 查看数据库所有表
show tables;

[info] (3)表数据导入的四种方式

[success] (1)从【本地】向hive中导入数据

数据准备(本地创建liuywtabledata.txt)
# 1.进入/data/software
cd /data/software

# 2.创建文本 liuywtabledata.txt
vi liuywtabledata.txt

# 3.写入以下内容

1201,Gopal,45000,Technical manager
1202,Manisha,45000,Proof reader
1203,Masthanvali,40000,Technical writer
1204,Krian,40000,Hr Admin
1205,Kranthi,30000,Op Admin
# 本地数据导入hive表中
load data local inpath '/data/software/liuywtabledata.txt' into table liuywtable;

# 查询表数据
select * from liuywtable;

# 导入的数据实际是存放在HDFS中,通过以下命令查看

hadoop fs -ls -R /user

hadoop fs -text xxx

[success] (2)从【HDFS】向hive中导入数据

数据准备,创建一个数据文本(liuywtabledata2.txt)
# 1.进入/data/software
cd /data/software

# 2.创建文本 liuywtabledata2.txt
vi liuywtabledata2.txt

# 3.写入以下内容
1206,小薇薇,45000,小薇薇哈哈
1207,中微微,46000,中微微哈哈
1208,大微微,47000,大微微哈哈
创建HDFS存放数据的目录liuywtablehdfs,并把 liuywtabledata2.txt 推送上去
# 创建HDFS的上传目录liuywtablehdfs
hadoop fs -mkdir /liuywtablehdfs

# 把liuywtabledata2.txt推送上去HDFS的liuywtablehdfs
hadoop fs -put /data/software/liuywtabledata2.txt /liuywtablehdfs

从【HDFS】向hive中导入数据
# 从【HDFS】向hive中加载数据
load data  inpath '/liuywtablehdfs/liuywtabledata2.txt' into table liuywtable;

# 查询表数据
select * from liuywtable;

[success] (3)从【本地】推送至hive的【HDFS】数据存放路径,完成数据导入

数据准备,创建一个数据文本(liuywtabledata3.txt)
# 1.进入/data/software
cd /data/software

# 2.创建文本 liuywtabledata3.txt
vi liuywtabledata3.txt

# 3.写入以下内容
1209,小哈哈,45000,小哈哈第一次
1210,中哈哈,46000,小哈哈第二次
1211,大哈哈,47000,小哈哈第三次

从【本地】推送至Hive的HDFS存储数据目录
# 推送liuywtabledata3.txt至HDFS
hadoop fs -put /data/software/liuywtabledata3.txt /user/hive/warehouse/liuyw.db/liuywtable

原理:在HDFS同一路径,并且数据文本格式相同,则相当于导入数据,并非一定需要使用命令:load data xxxx 导入

[success] (4)使用HQL插入语句进行数据导入,底层转化成:mapreduce-job

# 插入数据HQL语句
insert into liuywtable(num,name,salary,destination) values(1212,'mapreduce','5000','I-Love-MapReduce');

# 查询表数据
select * from liuywtable;

# 注意
HIVE: 支持插入, 不支持删除和更新

:-:

相关文章