hive的基本操作语句

news2024/11/27 16:34:27

背景:记录一下hive创建数据库,建表,添加数据,创建分区等的语句吧,省得总百度,😄

第一步:hive的建库语句

create database pdata_dynamic;

查看是否创建成功了

 show databases;

显示如下,则表示创建成功了

hive> show databases;
OK
default
pdata_dynamic
Time taken: 0.297 seconds, Fetched: 2 row(s)

第二步:hive的建表语句

一、创建内部表

create table student(id int,name string) 
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','     //以逗号进行分隔
STORED AS TEXTFILE           //存储格式为TEXTFILE
LOCATION '/user/hive/warehouse/pdata_dynamic/student';  //数据文件在HDFS上的存储位置

查看建表语句:show create table student;
显示如下;

CREATE TABLE `student`(
  `id` int, 
  `name` string)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' 
WITH SERDEPROPERTIES ( 
  'field.delim'=',', 
  'serialization.format'=',') 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  'hdfs://master:9000/user/hive/warehouse/pdata_dynamic/student'

引入下一个话题,向表中添加数据,向表中添加数据其实有好几种方式

1> 直接用insert语句

insert into student values ('1','wzx');

然后去数据库中查询,显示如下,则表示添加成功了
在这里插入图片描述

2>从其它表中添加

a.使用追加的方式从其他表查询相应数据并插入到Hive表中
注意:1.这里student_bak表可以是多个列的表,抽取一个或者两个字段添加到目标表都可以
2.也可以是多表关联,筛选出来的字段满足student表的字段规则就可以了

INSERT INTO student SELECT id,name from student_bak;

原表中数据如下;
在这里插入图片描述
执行完添加语句后,进入到目标表进行查询
在这里插入图片描述
b.使用覆盖的方式从student_bak表查询相应数据并插入到student表中

INSERT OVERWRITE table student SELECT id,name from student_bak;

执行完语句后,再去目标表中进行查询,发现已经覆盖成功了
在这里插入图片描述

3>在终端下执行load命令加载本地数据

a.追加的方式,加载本地数据到student表中
先造两条数据在本地

cat e.txt 
4,任盈盈
5,左冷禅

在终端下执行命令如下;

hive>  LOAD DATA LOCAL INPATH '/root/e.txt' INTO TABLE student;
Loading data to table pdata_dynamic.student
OK
Time taken: 0.334 seconds
hive> 

然后去表中进行查询,已经成功追加进来了
在这里插入图片描述
b.覆盖的方式,添加数据到student表中

LOAD DATA LOCAL INPATH '/root/e.txt' OVERWRITE  INTO TABLE student;

然后去表中进行查询,已经覆盖成功了
在这里插入图片描述

4>加载HDFS上的数据到hive表

a.先把数据文件put到HDFS上,文件路径正好是student表的建表路径
CREATE TABLE `student`(
  `id` int, 
  `name` string)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' 
WITH SERDEPROPERTIES ( 
  'field.delim'=',', 
  'serialization.format'=',') 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  'hdfs://master:9000/user/hive/warehouse/pdata_dynamic/student';

再造几条数据

cat f.txt 
6,东方不败
7,方正大师

put命令如下;

hadoop fs -put f.txt /user/hive/warehouse/pdata_dynamic/student;

执行完查看student表中的数据,已经成功加载进来了
在这里插入图片描述

b.先把数据文件put到HDFS上,文件路径不是student表的建表路径
aa.用load命令来将HDFS上的数据加载到hive表中(追加)

HDFS上新建目录data

hadoop fs -mkdir  /data    //新建目录命令

再造两条数据如下;

cat g.txt 
8,依琳
9,田伯光

将这个数据文件加载到data目录下

hadoop fs -put g.txt /data

查看HDFS上data路径下的文件如下,已经put成功了
在这里插入图片描述
执行加载的命令如下

LOAD DATA INPATH '/data/g.txt' INTO TABLE student;

执行完查看student表中的数据,已经成功加载进来了
在这里插入图片描述

bb.用load命令来将HDFS上的数据加载到hive表中(覆盖)

再造两条数据如下

cat h.txt 
10,定逸师太
11,岳不群

将这个数据文件加载到data目录下

hadoop fs -put h.txt /data

查看HDFS上data路径下的文件如下,已经put成功了
在这里插入图片描述
执行加载的命令如下

LOAD DATA INPATH '/data/h.txt' OVERWRITE INTO TABLE student;

执行完查看student表中的数据,已经覆盖成功了
在这里插入图片描述

二、创建外部表

说明:EXTERNAL关键字可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径(LOCATION),Hive创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据

create EXTERNAL table  student_out(id int,name string) 
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','     
STORED AS TEXTFILE           
LOCATION '/user/hive/warehouse/pdata_dynamic/student_out'; 

三、创建分区表(实际生产中用外部表多一些,中间的临时表用内部表多一些)

首先,区分动态分区和静态分区

创建一个带年,月,日,省份的分区表

create EXTERNAL table  gsgl
(car_plate string comment '1',
 car_color string comment '2',
 in_toll_station string comment '3',
 in_date string comment '4',
 in_province_code string comment '5',
 in_city_code string comment '6',
 in_county_code string comment '7',
 out_toll_station string comment '8',
 out_date string comment '9',
 out_province_code string comment '10',
 out_city_code string comment '11',
 out_county_code string comment '12',
 axle_number string comment '13',
 total_weight string comment '14',
 mileage string comment '15') 
 PARTITIONED BY (sfdm string comment '省份代码',
 year string comment '年',
 month string comment '月',
 day string comment '日'
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','     
STORED AS TEXTFILE           
LOCATION '/user/hive/warehouse/pdata_dynamic/gsgl'; 

创建分区

alter table gsgl add partition(sfdm='11',year='2021',month='01',day='20210101'); 

查看分区是否建立

hive> show partitions gsgl;
OK
sfdm=11/year=2021/month=01/day=20210101
Time taken: 0.264 seconds, Fetched: 1 row(s)

向分区表中添加数据(实际工作中不是这么玩的,这里只是做演示)

insert into table  gsgl partition(sfdm='11',year='2021',month='01',day='20210101')
values('1','2','3','4','5','6','7','8','9','10','11','12','13','14','15');

去表中进行查询
在这里插入图片描述
实际工作中的两种导入数据的方式
采用 insert into的方式

insert into table  gsgl
partition(sfdm='11',year='2021',month='01',day='20210101') select xxx,xxx,......  from 
gsgl_temp;

采用load的方式

load data local inpath '本地文件路径' into table gsgl partition 
(sfdm='11',year='2021',month='01',day='20210101');

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

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

相关文章

Jenkins入门教程

一、开始使用 Jenkins 本导读将向您介绍使用 Jenkins、Jenkins 的主要特性和 Jenkins Pipeline 的基本知识。 本导读使用“独立”的 Jenkins 发行版,它可以在您自己本地的机器上运行。 准备工作 第一次使用 Jenkins,您需要: 机器要求&…

从入门到实践:计算机视觉图像分类完全指南

计算机视觉图像分类是计算机视觉领域的一个重要分支,它的目标是让计算机能够识别并分类不同的图像。在本文中,我们将介绍计算机视觉图像分类的基本概念、流程和常用算法。 一、图像分类的基本概念 图像分类是指将输入的图像自动分类到预定义的一组类别中…

量子计算+真实材料模拟!美国埃姆斯国家实验室科学家获得新突破

​ 噪声量子比特ADAPT仿真(图片来源:网络) 量子计算机的潜在功能远远超出当今的经典计算机,来自美国能源部埃姆斯国家实验室的科学家们展示了一种在材料研究中利用量子计算的新方法,通过模拟材料的自适应算法&#xf…

自参考和对比学习正则化的Few-shot医学图像分割

文章目录 Few-shot Medical Image Segmentation Regularized with Self-reference and Contrastive Learning摘要本文方法Local Prototype-Based SegmentationSelf-reference RegularizationContrastive LearningSuperpixel-Based Self-supervised Learning 实验结果 Few-shot …

分布式搜索引擎2——深入elasticsearch

数据聚合 聚合的分类 聚合(aggregations)可以实现对文档数据的统计、分析、运算。聚合常见的有三类: 桶(Bucket)聚合:用来对文档做分组 TermAggregation:按照文档字段值分组Date Histogram:按照日期阶梯分组,例如一周为一组,或者一月为一组 度量&…

第10章:数据处理增删改

一、插入数据 CREATE TABLE emp1 (id int(11) ,name varchar(15) ,hire_date date ,salary double(10,2) )1.添加一条数据 ①没有指明添加的字段,一定按照顺序添加 insert into emp1 values(1,wang,2000-4-4,5900)②指明添加的字段(推荐)…

【 图像水印 2019 CVPR】 StegaStamp 论文翻译

【 图像水印 2019 CVPR】 StegaStamp 论文翻译 论文题目:StegaStamp: Invisible Hyperlinks in Physical Photographs 中文题目:物理照片中不可见的超链接 论文链接:https://arxiv.org/abs/1904.05343 论文代码:https://github.co…

QxRibbon 知:openEuler 23.03 搭建 Qt5 开发环境

文章目录 安装 openEuler 23.03 虚拟机安装 GNOME 桌面环境安装 Qt5 开发环境构建 QxRibbon参考资料 安装 openEuler 23.03 虚拟机 VMware 安装 openEuler 23.03 虚拟机 平台:x86_64 虚拟机配置:4核、4G内存、100G磁盘 ISO 镜像:https://mir…

FT2000+ qemu kvm 红旗 crash 分析 频繁设置CPU online导致进程卡死、不调度故障

测试程序 /** tcti.cpp参考&#xff1a; https://www.cnblogs.com/organic/p/17321523.htmlg -stdc11 -lpthread trigger_cgroup_timer_inactive.cpp -o inactive_timer ./inactive_timer 100000 10000 */#include <errno.h> #include <iostream> #include <pt…

Redis进阶(集群,雪崩,击穿,穿透.......)

Redis进阶 Redis事务_事务的概念与ACID特性 Redis的事物不保证原子性 数据库层面事务 在数据库层面&#xff0c;事务是指一组操作&#xff0c;这些操作要么全都被成功执行&#xff0c;要么全都不执行。 数据库事务的四大特性 A&#xff1a;Atomic&#xff0c;原子性&#xf…

Docker笔记5 | 容器的基本操作

5 | 容器的基本操作 1 启动容器1.1 启动方式1.2 新建容器并启动1.3 docker run时的运行过程1.4 启动已终止容器1.5 后台运行1.6 查看容器信息 2 终止容器3 进入容器3.1 docker attach3.2 docker exec 4 导入导出容器4.1 导出容器4.2 导入容器 5 删除容器 1 启动容器 1.1 启动方…

Linux内核主要组成部分有哪些?

Linux 内核由几大子系统构成&#xff0c;分别为进程调度、进程间通信&#xff08;IPC&#xff09; 、内存管理、虚拟 文件系统和网络接口。这几大子系统既相互独立又有非常紧密的关联。图 3-5 展示了内核的 几大子系统之间以及这些子系统和计算机系统的其他模块之间的关系。 接…

ADS-B教学实验方案

ADS-B教学系统是为了让学生学习ADS-B原理、ADS-B系统组成、ADS-B信号处理技术。可以通过ADS-B教学系统进一步研究分析ADS-B位置的精度、准确性、稳定性、实时性&#xff0c;设计基于ADS-B的空中碰撞告警系统&#xff0c;混合空域的空中交通管理系统(UTM)设计。也可以研究ADS-B报…

《花雕学AI》你不知道的AI 机器人:29个让你大开眼界的事实

AI 机器人是人工智能技术的最具代表性的应用之一&#xff0c;它们可以模仿人类的行为和思维&#xff0c;完成各种复杂的任务&#xff0c;如识别图像、语音和文字&#xff0c;进行对话、翻译和推理&#xff0c;控制机械臂、汽车和飞机等。AI 机器人的发展速度令人惊叹&#xff0…

Windows命令提示行使用指南二(批处理)

命令提示行使用指南 前言四、批处理简介五、如何编写批处理1、Hello world2、做加法3、查找文件&#xff0c;并输出到文本。4、批量重命名5、自动记录开机时间 前言 cmd 是 Windows 操作系统中的命令行界面&#xff08;CLI&#xff09;&#xff0c;也称为命令提示符&#xff0…

Linux shell编程 数组排序算法

冒泡排序 循环对比相邻的元素&#xff0c;交换较大元素到后面的位置 大循环根据列表中存在的元素数量循环n-1次&#xff0c;保证所有元素都能被排序完成 小循环从前向后遍历&#xff0c;循环一次循环范围减少一位&#xff08;由于后面的已经排列完成无需再比较&#xff09;小循…

【halcon知识】应用仿射变换

一、说明 无论什么样的变换&#xff0c;都离不开齐次变换矩阵。一般地&#xff0c;先准备一个空的齐次变换矩阵&#xff0c;这个矩阵随便填写&#xff1a;1&#xff09;填入旋转类参数就是旋转矩阵&#xff0c;2——填入仿射参数就可进行仿射变换&#xff0c;3&#xff09;填入…

Kali-linux攻击WordPress和其他应用程序

今天越来越多的企业利用SAAS&#xff08;Software as a Service&#xff09;工具应用在他们的业务中。例如&#xff0c;他们经常使用WordPress作为他们网站的内容管理系统&#xff0c;或者在局域网中使用Drupal框架。从这些应用程序中找到漏洞&#xff0c;是非常有价值的。 为…

[JAVA数据结构]堆

目录 1.堆的概念 2.堆的创建 3.堆的插入与删除 3.1堆的插入 3.2堆的删除 1.堆的概念 如果有一个关键码的集合K {k0&#xff0c;k1&#xff0c; k2&#xff0c;…&#xff0c;kn-1}&#xff0c;把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中&#xff0c;…

【Linux】远程桌面连接服务器报错:未启用对服务器的远程访问......

&#x1f341;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; 文章目录 前述操作环境说明&#xff1a;远程报…