大数据学习笔记14-Hive基础2

一、数据字段类型

数据类型 :LanguageManual Types - Apache Hive - Apache Software Foundation

  • 基本数据类型

    • 数值相关类型

      • 整数

        • tinyint

        • smallint

        • int

        • bigint

      • 小数

        • float

        • double

        • decimal 精度最高

    • 日期类型

      • date 日期

      • timestamps 日期时间

    • 字符串类型

      • string

      • varchar

      • char

    • 布尔类型

      • BOOLEAN 表示真假 只能存储0或1

  • 复杂类型

    • array 数组类型

      • [1,2,3]

      • ['a','b','c']

    • map

      • {key:value}

-- hive中的数据类型演示
use itcast;
-- 创建表
create table tb_test(id tinyint comment 'id值',age smallint comment '年龄',phone int comment '手机号',name varchar(20),gender string,weight decimal(10,2),create_time timestamp,hobby array<string> comment '兴趣爱好', -- [数据1]  arrary<数组中的数据类型>hero map<string,int> comment '游戏英雄' -- {key:value}  指定key值类型,指定value值类型
)comment '数据类型测试表';
​
-- 写入数据进行类型测试
insert into tb_test values(1,20,13711111111,'张三','男',180.21,'2020-10-01 10:10:10',array('篮球','足球'),map('关羽',80,'小乔',60));
insert into tb_test values(2000,20,13711111111,'张三','男',1800.21,'2020-10-01 10:10:10',array('篮球','足球'),map('关羽',80,'小乔',60));
​
select * from tb_test;
select hobby[1] from tb_test;
select hero['关羽'] from tb_test;

二、分隔符指定

对hdfs上的文件数据存储时的分割符进行指定

hive在将行数据存储在hdfs上时,默认字段之间的数据分隔符 \001

在创建表时可以指定分割符

row format delimited fields terminated by '分割符'
create table tb_row_field
(id     int,name   string,age    int,gender string
) row format delimited fields terminated by ','; -- 指定分隔符 固定格式
​
insert into tb_row_field values(1,'aa',20,'男');

三、表的修改

名字修改,字段名修改,字段类型修改

alter 关键字

alter table 表名  rename to 新的表名
alter table 表名  add columns(字段名 字段类型)
alter table 表名  change  旧字段名  新字段 字段类型
alter table 表名  set  属性设置
-- 表的修改修改操作
create table tb_ddl(id int,name string,age int,gender string
);
​
desc formatted tb_ddl2;
​
-- 修改表名
alter table tb_ddl rename to tb_ddl2;
​
-- 增加字段
alter table tb_ddl2 add columns(phone string);
​
​
-- 修改字段
alter table tb_ddl2 change id id bigint;
desc tb_ddl2;
-- 修改字段类型是,只能将小字节的类型修改为大字节的类型
-- alter table tb_ddl2 change id id int;
​
​
​
-- 修改表属性
alter table tb_ddl2 set tblproperties('age12'='20');
desc formatted tb_ddl2;
​
-- hdfs://node1:8020/user/hive/warehouse/itcast.db/tb_ddl2
alter table tb_ddl2 set location 'hdfs://node1:8020/tb_ddl2';
desc formatted tb_ddl2;
insert into tb_ddl2 values(1,'aa',20,'ccc','123123123');
​
​
alter table tb_ddl2 add columns(create_time date comment '创建时间',price decimal(10,2));
desc tb_ddl2;
alter table tb_ddl2 change age age1 string after phone;
desc tb_ddl2;
alter table tb_ddl2 change age1 age double after id;
desc tb_ddl2;

四、表的删除

-- 表删除  会删除表的目录和表的元数据信息
drop table tb_ddl2;
select * from tb_ddl2;
-- 表清空数据  把存储数据的文件一并删除
select * from tb_row_field;
truncate table tb_row_field;

五、表的分类

内部表 Managed Tabel

外部表 External Tables


区别:

在删除表时,

内部表会把表的所有数据删除(元数据和行数据)

外部表会把表的元数据删除,保留hdfs上的文件数据


默认创建的表都是内部表

创建外部表需要使用关键字External

create external table 表名(字段 字段类型
)
-- 创建内部表
create table tb_managed(id int,name string
);
-- 创建外部表
create external table tb_external(id int,name string
);
​
desc formatted tb_managed;
desc formatted tb_external;
​
drop table tb_managed;
drop table tb_external;
-- 修改表的类型
desc formatted tb_managed;
alter table tb_managed set tblproperties('EXTERNAL'='TRUE'); -- 设置为外部表
alter table tb_managed set tblproperties('EXTERNAL'='FALSE');-- 设置为内部表

六、表数据写入

在对表数据写入时有两张方式

方式一 直接将数据文件上传到指定的表目录下

方式二 通过insert将数据写入的表目录的文件中

6-1 方式一 将数据文件上传到对应的表目录下

  • 可以使用hdfs上传

  • 可以使用hivesql的load语句上传

    • hive运行的位置就文件上传的位置

LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]
-- filepath 指定本地服务器的数据文件位置 ,本地指的是hive运行的服务器
-- 使用load语句将文件数据上传表中
-- file:// 是本地文件的路径协议,是一个固定写法
load data local inpath 'file:///root/order5.txt' into table tb_order;
​
-- 覆盖上传文件
load data local inpath 'file:///root/order5.txt' overwrite into table tb_order;

6-2 方式2 使用insert指定数据导入

INSERT OVERWRITE TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...) [IF NOT EXISTS]] select_statement1 FROM from_statement;
​
INSERT INTO TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...)] select_statement1 FROM from_statement;
insert into tb_order values (1,123.23,5,'北京');
​
insert overwrite table tb_order values (2,123.23,5,'上海');
​
​
-- 写入数据是在values中指定
-- 也可以将一个select 查询结果写到表中
create table tb_order_new(id int,total_price decimal(10,2),total_number int,address string
)row format delimited  fields terminated by ',';
​
insert into tb_order_new select * from tb_order;
​
​
-- 通过该方式可以实现计算结果的保存
create table tb_result(cnt int comment '总数'
);
​
insert into tb_result select count(*) from tb_order;
​
select * from tb_result;

6-3 将表数据导出到服务器

insert overwrite local directory 'file:///root/data' row format delimited fields terminated by ',' select * from tb_order;

七、表的分区

在公司会产生大量数据,数据存储在hdfs上时,需要对数据进行拆分,在进行数据查询时就可以快速查询到需要的内容

如果需要进行数据的分区操作,就需要再建表的时候指定分区字段

-- 创建分区表
create table tb_user_partiton(id int,name string,age int,create_time date
)partitioned by(gender int)row format delimited fields terminated by ',';
-- 静态分区数据写入
-- 手动指定分区数据
insert into tb_user_partiton partition(gender=0) values(1,'张三',20,'2024-10-10 14:21:21');
​
-- 动态分区数据写入,可以根据select中指定的字段数据最为分区的依据
-- 需要进行设置开启
set hive.exec.dynamic.partition.mode=nonstrict;
insert into tb_user_partiton partition(gender) select id,name,age,create_time,gender from tb_user;
​
-- 多层分区
create table tb_user_partiton_many(id int,name string,age int,gender int,create_time date
)partitioned by (y string,m string,d string)row format delimited fields terminated by ',';
​
insert into tb_user_partiton_many partition(y,m,d) select id,name,age,gender,create_time,year(create_time),month(create_time),day(create_time) from tb_user limit 100;
​
select * from tb_user_partiton_many where y=2015 and m=10;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/831385.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nginx--自定义日志跳转长连接文件缓存状态页

自定义日志服务 [rootlocalhost ~]# cat /apps/nginx/conf/conf.d/pc.conf server {listen 80;server_name www.fxq.com;error_log /data/nginx/logs/fxq-error.log info;access_log /data/nginx/logs/fxq-access.log main;location / {root /data/nginx/html/pc;index index…

使用STM32F103C8T6与蓝牙模块HC-05连接实现手机蓝牙控制LED灯

导言: 在现代智能家居系统中,远程控制设备变得越来越普遍和重要。本文将介绍如何利用STM32F103C8T6单片机和蓝牙模块HC-05实现远程控制LED灯的功能。通过这个简单的项目,可以学会如何将嵌入式系统与蓝牙通信技术相结合,实现远程控制的应用。 目录 导言: 准备工作: 硬…

Java零基础入门到精通_Day 11

1.继承 定义&#xff1a; 继承是面向对象三大特征之一。可以使得子类具有父类的属性和方法&#xff0c;还可以在子类中重新定义&#xff0c;追加属性和方法 格式&#xff1a; public class 子类 extends 父类{} 子类&#xff1a;也叫派生类 父类&#xff1a;基类/超类 继…

低代码技术在构建质量管理系统中的应用与优势

引言 在当今快节奏的商业环境中&#xff0c;高效的质量管理系统对于组织的成功至关重要。质量管理系统帮助组织确保产品或服务符合客户的期望、符合法规标准&#xff0c;并持续改进以满足不断变化的需求。与此同时&#xff0c;随着技术的不断进步&#xff0c;低代码技术作为一…

机器学习笔记-14

机器学习系统设计 1.导入 以垃圾邮件分类器为例子&#xff0c;当我们想要做一个能够区分邮件是否为垃圾邮件的项目的时候&#xff0c;首先在大量垃圾邮件中选出出现频次较高的10000-50000词作为词汇表&#xff0c;并为其设置特征&#xff0c;在对邮件分析的时候输出该邮件的特…

计算机网络-408考研

后续更新发布在B站账号&#xff1a;谭同学很nice http://【计算机408备考-什么是计算机网络&#xff0c;有什么特点&#xff1f;】 https://www.bilibili.com/video/BV1qZ421J7As/?share_sourcecopy_web&vd_source58c2a80f8de74ae56281305624c60b13http://【计算机408备考…

在idea中连接mysql

IDE&#xff08;集成开发环境&#xff09;是一种软件应用程序&#xff0c;它为开发者提供编程语言的开发环境&#xff0c;通常集成了编码、编译、调试和运行程序的多种功能。一个好的IDE可以大幅提高开发效率&#xff0c;尤其是在进行大型项目开发时。IDE通常包括以下几个核心组…

Docker-Compose编排lnmp(dockerfile) 完成Wordpress

目录 一、创建nginx镜像 二、创建mysql镜像 三、创建php镜像 四、启动wordpress 五、安装Compose 六、准备环境 ​编辑 七、编写docker-compose.yml 八、启动并运行 九、浏览器访问 一、创建nginx镜像 #基于基础镜像 FROM centos:7 #用户信息 MAINTAINER this is ngi…

LabVIEW换智能仿真三相电能表研制

LabVIEW换智能仿真三相电能表研制 在当前电力工业飞速发展的背景下&#xff0c;确保电能计量的准确性与公正性变得尤为重要。本文提出了一种基于LabVIEW和单片机技术&#xff0c;具有灵活状态切换功能的智能仿真三相电能表&#xff0c;旨在通过技术创新提高电能计量人员的培训…

vue初始化项目

打开终端输入vue create project-name 选择Manually select features回车&#xff0c;继续选择如下&#xff1a; 如果要使用pina就可以不选vuex&#xff0c;回车&#xff0c;选择如下&#xff1a; 按下图选即可

BJFUOJ-C++程序设计-实验2-类与对象

A 评分程序 答案&#xff1a; #include<iostream> #include<cstring>using namespace std;class Score{ private:string name;//记录学生姓名double s[4];//存储4次成绩&#xff0c;s[0]和s[1]存储2次随堂考试&#xff0c;s[2]存储期中考试&#xff0c;s[3]存储期…

与 Apollo 共创生态:企业解决方案Apollo X 9.0,七载同舟,携手远航,视频简说

目录 介绍背景方案与项目Apollo 开源项目Apollo X 企业解决方案落地因素助力企业落地流程 预置套件需求定义功能定义场景用例融合技术面向园区功能安全Cyber RT企业硬件套件 开发工具链研发迭代范式协同研发工具链标定工具地图工具仿真平台数据闭环 企业合作模式合作方式 共创计…

挑战一周完成Vue3项目Day4: 用户管理+角色管理+菜单管理+首页+暗黑模式/主题切换

一、用户管理 1.静态搭建 src/views/acl/user/index.vue <template><el-card style"height:80px;"><el-form :inline"true" class"form"><el-form-item label"用户名&#xff1a;"><el-input placehold…

Docker——生产案例(如何修改Docker部署服务的端口映射)

目录 前言 1. 测试环境中新建Apache服务 2.停止容器和Docker服务 3.修改容器配置 4.重启Docker服务并访问测试 前言 由于接替原工作人员的工作之后&#xff0c;上级需要修改Docker部署Apache服务的端口映射&#xff0c;将89端口修改为99端口&#xff0c;那我们该如何修改呢…

JAVA 学习·泛型(二)——通配泛型

有关泛型的基本概念&#xff0c;参见我的前一篇博客 JAVA 学习泛型&#xff08;一&#xff09;。 协变性 泛型不具备协变性 在介绍通配泛型之前&#xff0c;先来看一下下面的例子。我们定义了一个泛型栈&#xff1a; import java.util.ArrayList; class GenericStack<E>…

如何完全卸载QT

第一步&#xff0c;用QT自带的软件卸载QT 第二步&#xff0c;卸载下面路径的所有QT配置 C:用户/(你的用户)/AppData/Local/目录下所有与Qt相关内容 C:用户/(你的用户)/AppData/Local/Temp/所有与Qt相关内容 C:用户/(你的用户)/AppData/Roaming/所有与Qt相关内容

android init进程启动流程

Android系统完整的启动流程 android 系统架构图 init进程的启动流程 init进程启动服务的顺序 bool Service::Start() {// Starting a service removes it from the disabled or reset state and// immediately takes it out of the restarting state if it was in there.flags_…

vue快速入门(五十一)历史模式

注释很详细&#xff0c;直接上代码 上一篇 新增内容 历史模式配置方法 默认哈希模式&#xff0c;历史模式与哈希模式在表层的区别是是否有/#/ 其他差异暂不深究 源码 //导入所需模块 import Vue from "vue"; import VueRouter from "vue-router"; import m…

Hive 表定义主键约束

文章目录 1.建表语句2.主键约束3.主键约束的意义参考文献 1.建表语句 先看一下官方给的完整的见表语句&#xff1a; CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name -- (Note: TEMPORARY available in Hive 0.14.0 and later)[(col_name data…

全新TOF感知RGBD相机 | 高帧率+AI,探索3D感知新境界

海康机器人在近期的机器视觉新品发布会上推出的全新TOF感知RGBD相机,无疑是对当前机器视觉技术的一次革新。这款相机不仅融合了高帧率、轻松集成、体积小巧以及供电稳定等诸多优点,更重要的是,它将AI与3D感知技术完美结合,通过高帧率+AI算法,实现了对不同场景的快速捕捉与…