hive表基本语法

hive表基本语法

青少年是一个美好而又是一去不可再得的时期 是将来一切光明和幸福的开端

目录

hive表基本语法

[1.ROW FORMAT用法](#1.ROW FORMAT用法)

2.LOCATION用法

[3.EXTERNAL用法 (外部表)](#3.EXTERNAL用法 (外部表))

[4.STORED AS 用法:设置数据存储格式](#4.STORED AS 用法:设置数据存储格式)

[5.TBLPROPERTIES 用法](#5.TBLPROPERTIES 用法)

[6.PARTITIONED BY 分区](#6.PARTITIONED BY 分区)

7.扩展:向分区中插入数据时出错


1.ROW FORMAT用法

1)创建一个表

CREATE TABLE IF NOT EXISTS filetest.total_score

(

student_id string COMMENT "学生编号",

score int COMMENT "总分"

)ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t"

STORED AS TEXTFILE;

2)上传一下数据

load data local inpath "/usr/local/soft/hive-3.1.2/data/total_score.txt" into table filetest.total_score;

3)查看内容

select * from filetest.total_score;

ROW FORMAT用于指定Hive表中数据的存储格式 通常在创建表时使用ROW FORMAT具体指定了数据在Hive表中的行格式 包括字段之间的分隔符 行之间的分隔符等

常见的字段分隔符有逗号 制表符(制表符:Tab键 (\t))等 行分隔符一般为换行符

注意:如果数据和分隔符不匹配 则原始数据中的所有数据会变成新表中的一列数据

2.LOCATION用法

在Hive中 LOCATION关键字用于指定Hive表的存储位置 通常情况下 当你创建一个Hive表时 表的数据会存储在HDFS(Hadoop分布式文件系统)上的默认位置 但是你也可以使用LOCATION关键字来指定表的具体存储路径 使得表的数据可以存储在你指定的任意路径下 这为管理和组织数据提供了更大的灵活性

1)我们先创建一个路径

dfs -ls /;

dfs -mkdir /testDatabase/total_score;

2)创建表

CREATE TABLE IF NOT EXISTS filetest.total_score3

(

student_id string COMMENT "学生编号",

score int COMMENT "总分"

)ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t"

STORED AS TEXTFILE

LOCATION "/testDatabase/total_score";

3)上传数据

load data local inpath "/usr/local/soft/hive-3.1.2/data/total_score.txt" into table filetest.total_score3;

4)查看表信息

查看表的字段信息

desc total_score3;

查看表的详细信息

desc formatted total_score3;

5)删除表

drop table total_score3;

删除表的时候 HDFS上的文件也会删除

那么 如果有重要信息 我们不想轻易删除怎么办?

3.EXTERNAL用法 (外部表)

1)我们先创建一个路径

dfs -ls /;

dfs -mkdir /testDatabase/total_score;

2)创建表

CREATE EXTERNAL TABLE IF NOT EXISTS filetest.total_score3

(

student_id string COMMENT "学生编号",

score int COMMENT "总分"

)ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t"

STORED AS TEXTFILE

LOCATION "/testDatabase/total_score";

3)上传数据

load data local inpath "/usr/local/soft/hive-3.1.2/data/total_score.txt" into table filetest.total_score3;

4)删除表

drop table total_score3;

注:

外部表与普通内部表的区别在于:外部表删除表时 只能删除hive中的元数据 我们可以看到表被删除了 但是数据依然存在 不会删除对应的数据 并且和表数据的存储位置无关

4.STORED AS 用法:设置数据存储格式

1)使用方法一:

CREATE EXTERNAL TABLE IF NOT EXISTS filetest.total_score4

(

student_id string COMMENT "学生编号",

score int COMMENT "总分"

)ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t"

STORED AS ORC;

--load data local inpath "/usr/local/soft/hive-3.1.2/data/total_score.txt" into table filetest.total_score4;--

注意:如果数据存储格式为压缩格式 那么就不能直接将文本数据加载至表中

insert into table filetest.total_score4 select * from filetest.total_score;

2)使用方法二:

通过查询语句的结果 去创建一个新表

create table if not exists filetest.total_score5 STORED AS ORC AS select student_id,score from filetest.total_score;

5.TBLPROPERTIES 用法

1)创建表

CREATE EXTERNAL TABLE IF NOT EXISTS filetest.total_score6

(

student_id string COMMENT "学生编号",

score int COMMENT "总分"

)ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t"

STORED AS TEXTFILE

TBLPROPERTIES("author"="jhw","application"="学生表 保存学生的总分 如有错请联系:jhw");

2)查看表信息

查看表的字段信息

desc total_score6;

查看表的详细信息

desc formatted filetest.total_score6;

6.PARTITIONED BY 分区

--将学生信息表中不同性别的学生进行分区保存

1)创建表

CREATE TABLE IF NOT EXISTS filetest.partition_student

(

id STRING COMMENT "学生ID",

name STRING COMMENT "学生姓名",

age int COMMENT "年龄",

clazz STRING COMMENT "班级"

) PARTITIONED BY (gender STRING COMMENT "性别分区")

STORED AS TEXTFILE;

2)查看表结构

3)插入数据

开启动态分区支持 通过动态分区进行数据插入

set hive.exec.dynamic.partition=true;

set hive.exec.dynamic.partition.mode=nostrict;

set hive.exec.max.dynamic.partitions.pernode=1000;

复制代码
insert into table filetest.partition_student PARTITION(gender="男") select id,name,age,clazz FROM filetest.students where gender="男" limit 10;

注意:动态分区默认把最后一个字段设置为分区字段

静态分区:

复制代码
insert into table filetest.partition_student PARTITION(gender="男") select "1500100002","吕金鹏",24,"文科六班";​​

select * from students limit 10;

7.扩展:向分区中插入数据时出错

我们打开MySQL 修改一下编码就可以啦

  1. 打开数据库

mysql -u root -p123456

2.use hive

3.输入以下命令

复制代码
修改hive database 编码​alter database hive default character set utf8;​修改 table 编码​alter table PARTITIONS default character set utf8;​alter table PARTITION_KEY_VALS default character set utf8;​alter table SDS default character set utf8;​修改 字段 编码​alter table PARTITIONS modify column PART_name varchar(190) character set utf8;​alter table PARTITION_KEY_VALS modify column PART_KEY_VAL varchar(256) character set utf8;​alter table SDS modify column LOCATION varchar(4000) character set utf8;
相关推荐
顧棟16 小时前
【Yarn实战】Yarn 2.9.1滚动升级到3.4.1调研与实践验证
hadoop·yarn
D明明就是我18 小时前
Hive 拉链表
数据仓库·hive·hadoop
嘉禾望岗5031 天前
hive join优化和数据倾斜处理
数据仓库·hive·hadoop
yumgpkpm1 天前
华为鲲鹏 Aarch64 环境下多 Oracle 数据库汇聚操作指南 CMP(类 Cloudera CDP 7.3)
大数据·hive·hadoop·elasticsearch·zookeeper·big data·cloudera
忧郁火龙果1 天前
六、Hive的基本使用
数据仓库·hive·hadoop
忧郁火龙果1 天前
五、安装配置hive
数据仓库·hive·hadoop
chad__chang2 天前
dolphinscheduler安装过程
hive·hadoop
莫叫石榴姐2 天前
字节数开一面
大数据·数据仓库·职场和发展
ajax_beijing2 天前
hadoop的三副本数据冗余策略
大数据·hadoop·分布式