大数据学习笔记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.mfbz.cn/a/583846.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

UE C++ 链表

目录 概要单链表双向链表头插入尾插入中间插入删除查找 小结 概要 链表 简单说明&#xff0c;链表有单链表&#xff0c;双向链表&#xff0c;循环链表(本篇文章以UE c代码说明)。链表的操作&#xff0c;插入&#xff0c;删除&#xff0c;查找。插入&#xff0c;删除效率高&…

练习题(2024/4/29)

在深度优先遍历中&#xff1a;有三个顺序&#xff0c;前中后序遍历 这里前中后&#xff0c;其实指的就是中间节点的遍历顺序&#xff0c;只要记住 前中后序指的就是中间节点的位置就可以了。 如图 1二叉树的前序遍历 给你二叉树的根节点 root &#xff0c;返回它节点值的 前…

【项目】仿muduo库One Thread One Loop式主从Reactor模型实现高并发服务器(Http测试板块)

【项目】仿muduo库One Thread One Loop式主从Reactor模型实现高并发服务器&#xff08;Http测试板块&#xff09; 一、使用Http网页界面1、main.cc原码和index.html原码2、运行结果&#xff08;1&#xff09;测试结果1&#xff1a;用index.html内部的代码&#xff08;2&#xf…

《HelloGitHub》第 97 期

兴趣是最好的老师&#xff0c;HelloGitHub 让你对编程感兴趣&#xff01; 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等&#xff0c;涵盖多种编程语言 Python、…

win下vscode的vim切换模式的中英文切换

问题描述 在vscode中安装vim插件后&#xff0c;如果insert模式下完成输入后&#xff0c;在中文输入方式下按esc会发生无效输入&#xff0c;需要手动切换到英文。 解决方法 下载完成vscode并在其中配置vim插件下载github—im-select.exe插件&#xff08;注意很多博文中的gitcod…

Microsoft Threat Modeling Tool 使用(二)

主界面 翻译 详细描述 选择了 “SDL TM Knowledge Base (Core)” 模板并打开了一个新的威胁模型。这个界面主要用于绘制数据流图&#xff08;Data Flow Diagram, DFD&#xff09;&#xff0c;它帮助您可视化系统的组成部分和它们之间的交互。以下是界面中各个部分的功能介绍&a…

软件设计师-重点的行为型设计模式

一、命令模式&#xff08;Command&#xff09;&#xff1a; 意图&#xff1a;&#xff08;上午题&#xff09; 将一个请求封装为一个对象&#xff0c;从而使得可以用不同的请求对客户进行参数化&#xff1b;对请求排队或记录请求日志&#xff0c;以及支持可撤销的操作。 结构…

Django-基础篇

Django是一个开放源代码的Web应用框架&#xff0c;由Python语言编写。它遵循MVC&#xff08;Model-View-Controller&#xff09;的软件设计模式&#xff0c;使开发者能够以高效、可扩展和安全的方式构建Web应用程序。 Django具有以下特点和优势&#xff1a; 强大的功能&#x…

[技术小技巧] 可视化分析:在jupyter中使用d3可视化树形结构

首先在python中定义一个字符串&#xff0c;记录d3.js绘制属性图的js脚本代码模版。其中{{data}}就是将来要被替换的内容。 d3_code_template """ // 创建树状结构数据 var treeData {{data}};// 创建d3树布局 var margin { top: 20, right: 90, bottom: 30,…

行业推荐:数据防泄漏软件首先解决方案

随着信息时代的快速发展&#xff0c;数据安全已成为企业经营的关键之一。然而&#xff0c;数据泄漏事件时有发生&#xff0c;不仅可能导致巨大的经济损失&#xff0c;更会损害企业的声誉和客户信任。 为了帮助企业有效地保护数据安全&#xff0c;Ping32 数据防泄漏系统应运而生…

【跟我学RISC-V】认识RISC-V指令集并搭建实验环境

写在前面 现在计算机的体系架构正是发展得如火如荼的时候&#xff0c;占领桌面端市场的x86架构、占领移动端市场的arm架构、在服务器市场仍有一定地位的mips架构、国产自研的指令集loongarch架构、还有我现在要讲到的新型开源开放的RISC-V指令集架构。 我先说一说我的学习经历…

Facebook的语言学:社交媒体如何影响我们的沟通方式

1. 引言 社交媒体已经成为人们日常生活中不可或缺的一部分&#xff0c;而Facebook作为其中最具影响力的平台之一&#xff0c;不仅改变了人们之间的社交方式&#xff0c;也对我们的语言学产生了深远的影响。本文将深入探讨Facebook的语言学特点&#xff0c;以及它如何塑造和改变…

【C++题解】1608. 三位数运算

问题&#xff1a;1608. 三位数运算 类型&#xff1a;基本运算、拆位求解 题目描述&#xff1a; 小丽在编程课上学会了拆位运算&#xff0c;她已经可以拆出一个三位整数的百位、十位和个位了&#xff0c;她想知道这个整数的&#xff08;百位 十位&#xff09; / &#xff08;…

Web3与智能合约:科技革新下的新金融时代

在当今数字化时代&#xff0c;Web3和智能合约正在共同塑造着金融领域的未来。Web3作为下一代互联网的重要组成部分&#xff0c;以其去中心化、安全性和透明性为核心特点&#xff0c;正推动着金融行业向着数字化和去中心化的方向发展。而智能合约作为Web3技术的关键应用之一&…

虚拟机网络桥接模式无法通信,获取到的ip为169.254.X.X

原因&#xff1a;VMware自动选择的网卡可能不对 解决&#xff1a;编辑-虚拟网络编辑器-更改桥接模式-选择宿主机物理网卡&#xff0c;断开虚拟机网络连接后重新连接即可

Docker(Docker的安装和介绍,常用命令,镜像制作,服务编排,docker私服)

目录 一、简介 1. docker简介 1 什么是docker 2 容器和虚拟机对比 2. 安装docker 1 docker相关概念 2 安装docker 1 安装docker 2 设置注册中心(仓库) 3. 小结 二、常用命令【重点】 1. 服务管理 2. 镜像管理 1 语法说明 2 使用练习 3. 容器管理 1 容器介绍 2…

2024.4.25 LoadRunner 测试工具详解 —— Controller Analysis

目录 Controller 的使用 创建场景 Controller 快捷方式创建场景 VUG 针对写好脚本创建场景 场景设计 设计初始化 设计启动机制 设计性能测试脚本的执行时间 设计虚拟用户退出机制 场景运行 添加监控指标至图标格区域 Analysis 的使用 汇总报告 测试报表 吞吐量图 …

Dockerfile实战---构建SSH、Tomcat、MySQL、Nginx镜像

目录 引言 一、安装docker程序 二、构建SSH镜像 1.创建镜像 2.基于sshd镜像创建容器 三、构建tomcat镜像 1.创建镜像 2.基于tomcat镜像创建容器 四、构建MySQL镜像 1.创建镜像 2.基于mysqld镜像创建容器 五、构建nginx镜像 1.创建镜像 2.基于nginx镜像创建容器 引…

用Stream流方式合并两个list集合(部分对象属性重合)

一、合并出共有部分 package com.xu.demo.test;import java.util.Arrays; import java.util.List; import java.util.stream.Collectors;public class ListMergeTest1 {public static void main(String[] args) {List<User> list1 Arrays.asList(new User(1, "Alic…

Linux学习之Tcp与Udp

目录 UDP Udp协议的格式 UDP的传输特性 UDP的缓冲区 基于UDP的应用层协议 TCP协议 TCP的报文格式 1.ACK确认应答机制 2.超时重传 3.TCP的链接管理机制 为什么要三次握手呢&#xff1f; 理解TIME_WAIT状态 流量控制&#xff08;可靠性效率&#xff09; 滑动窗口 拥塞…
最新文章