hive:一文带你掌握hive基本命令

          Hive构建在Hadoop文件系统之上,Hive不提供实时的查询和基于行级的数据更新操作,不适合需要低延迟的应用,如联机事务处理(On-line Transaction Processing,OLTP)相关应用。

            Hive作为数据仓库软件,使用类SQL的HiveQL语言实现数据查询,所有Hive数据均存储在Hadoop文件系统中,具有以下特性。

        1)使用HiveQL以类SQL查询的方式轻松访问数据,将HiveQL查询转换为MapReduce的任务在Hadoop集群上执行,完成ETL(Extract、Transform、Load,提取、转换、加载)、报表、数据分析等数据仓库任务。HiveQL内置大量UDF(User Defined Function)来操作时间、字符串和其他的数据挖掘工具,支持用户扩展UDF函数来完成内置函数无法实现的操作。

        2)多种文件格式的元数据服务,包括TextFile、SequenceFile、RCFile和ORCFile,其中TextFile为默认格式,创建SequenceFile、RCFile和ORCFile格式的表需要先将文件数据导入到TextFile格式的表中,然后再把TextFile表的数据导入SequenceFile、RCFile和ORCFile表中。

        3)直接访问HDFS文件或其他数据存储系统(如HBase)中的文件。 ·

        4)支持MapReduce、Tez、Spark等多种计算引擎,可根据不同的数据处理场景选择合适的计算引擎。

        5)支持HPL/SQL程序语言,HPL/SQL是一种混合异构的语言,可以理解几乎任何现有的过程性SQL语言(如Oracle PL/SQL、Transact-SQL)的语法和语义,有助于将传统数据仓库的业务逻辑迁移到Hadoop上,是在Hadoop中实现ETL流程的有效方式。

        6)可以通过HiveLLAP(Live Long and Process)、Apache YARN和Apache Slider(动态YARN应用,可按需动态调整分布式应用程序的资源)进行秒级的查询检索。LLAP结合了持久查询服务器和优化的内存缓存,使Hive能够立即启动查询,避免不必要的磁盘开销,提供较佳的查询检索效率。

1.启动hadoop

cd /apps/hadoop/sbin  
./start-all.sh  

2.启动MySQL

sudo service mysql start 

3.启动hive

cd /apps/hive/bin  
hive  

3.创建数据库

create  database if not exists 库名;
use 库;

4.创建表

--- 创建内部表
create table if not exists 表名(字段名 属性,字段名 属性,......);
-- 创建外部表
create external table if not exists 表名(字段名 属性,字段名 属性,......);
-- 创建表,可以读取以“,”分割的数据
create external table if not exists 表名(字段名 属性,字段名 属性,......)
row format delimited fields terminated by ',';
-- 创建分区表
create table if not exists 表名(字段名 属性,字段名 属性,......) partitioned by (分区字段 属性);
-- 创建表2,结构等同于表1
create table if not exists usr1 like usr;

5.创建视图

hive>create view 视图名 as select id,age from usr;
--- 创建视图,只包含usr表中id,age属性

6.删除操作

-- 删除数据库
drop databasehive;
drop database if not exists 库名;
-- 删除数据库及其中所有表
drop database if not exists 库名 cascade;
-- 删除表
drop table if exists 表名;
-- 删除表usr,如果是内部表,元数据和实际数据都会被删除;
-- 如果是外部表,只删除元数据,不删除实际数据
-- 删除视图
dropview if exists 视图名;

7.修改

-- 修改数据库
-- 为hive数据库设置dbproperties键值对属性值来描述数据库属性信息
alter database hive set dbproperties(‘edited-by’=’lily’);
-- 修改表 重命名
alter table 原名 rename to 新名;
-- 修改表 增加分区
alter table 表名 add if not exists partition(age=10);
-- 删除表中分区
alter table 表名 drop if exists partition(age=10);
-- 修改列名
alter table 表名 change 原名 新名 属性 after 位置;
-- 例:把表usr中列名name修改为username,并把该列置于age列后
alter table usr change name username string after age;
-- 增加列
alter table 表名 add columns(列名 属性);
-- 删除原有字段,指定新字段
alter table 表名
replace columns(新列名 属性,新列名 属性,.... );
-- 修改视图
alter view 视图名 set .... ;

8.查看

-- 查看数据库
show databases;
-- 查看指定条件数据库
show databases like ‘h.*’;
-- 查看表和视图
show tables;
-- 查看指定条件的表和视图
show tables in hive like ‘u.*’;

9.描述

-- 查看数据库基本信息
describe database 库名
-- 查看数据库详细信息
describe database extended 库名;
-- 查看表、视图的基本信息
describe 名;
-- 查看表、视图的详细信息
describe extended 名;
-- 查看某一列的信息
describe extended 库名.表名.列名;

10.信息的装载

-- 把本地目录下文件中的数据装载进表中,并覆盖原有数据
load data local inpath ‘/usr/local/data’ overwrite into table 表名;
-- 把本地目录下文件中的数据装载进表中,不覆盖原有数据
load data local inpath‘/usr/local/data’  into table 表名;
-- 把分布式文件系统目录下文件中的数据装载进表中,并覆盖原有数据
load data inpath ‘hdfs://master_srever/usr/local/data’ overwrite into table 表名

11.数据导入和导出

-- 插入其他表中的数据并覆盖原有数据
insert overwrite table usr1 select * from usr where age=10;;
-- 插入其他表中的数据,不覆盖原有数据
insert table usr1 select * from usr where age=10;;
-- 将表中数据导出到本地目录
insert overwrite local directory '/data/hive2/out' select * from cat_group;
-- 将表中数据导出到分布式文件系统目录
insert overwrite directory'/myhive2/out' select * from cat_group; 

12.数据的查询(同MySQL)

-- select 查询
hive>select * from student;
hive>select * from student limit 1;
hive>select name from student;
hive>select t.name from student t;
-- join查询
hive>select t1.name,t2.coursename from student t1 >join course t2 on t1.stuid = t2.stuid;
hive>select t1.name,t2.coursename from student t1 >left join course t2 on t1.stuid = t2.stuid;
hive>select t1.name,t2.coursename from student t1 >right join course t2 on t1.stuid = t2.stuid;
hive>select t1.name,t2.coursename from student t1 >full join course t2 on t1.stuid = t2.stuid;
-- where子句
hive >select * from student where age = 21;
-- 嵌套查询
hive >select a.name, b.coursename
> from (select stuid, name from student) a
> join (select stuid, coursename from course) b on a.stuid = b.stuid;
-- order by 子句
hive >select * from student order by age desc;
hive >select * from student order by age;
-- groupby :分组,常与聚合函数同时使用
hive >select sex,avg(age) from student group by sex;
hive >select sex,avg(age) from student group by sex having avg(age) > 20;

 hive的详细介绍和安装可参考:(超详细)大数据技术之Hive的实战_hive实战-CSDN博客 

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

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

相关文章

javaweb学习day4--《maven篇》maven的项目创建及其依赖管理详解(基于最新版本的idea)

一、前言 javaweb学习的第四天,不知道今天你们是否坚持下去了。今天学习到的是maven,温馨提示一下,idea中自带maven不用自行去下载了。前期的配置工作太过复杂了,小编感觉自己能力有限并不能将其讲的太清楚,还请大家在…

PlugLink的技术架构实例解析(附源码)

在探讨PlugLink这一开源应用的实际应用与技术细节时,我们可以从其构建的几个核心方面入手,结合当前AI编程的发展趋势,为您提供既有实例又有深度解析的内容。 PlugLink的技术架构实例解析 前端技术选型 —— layui框架: PlugLi…

maven——(重要)手动创建,构建项目

创建项目 手动按照maven层级建好文件夹,并写上java,测试代码和pom文件 构建项目 在dos窗口中执行如下命令 compile编译 当前maven仓库中什么都没有。 在pom所在层级下,执行: mvn compile 就开始显示下面这些,…

MQTT是什么,物联网

写文思路: 以下从几个方面介绍MQTT,包括:MQTT是什么,MQTT和webSocket的结合,以及使用场景, 一、MQTT是什么 MQTT(Message Queuing Telemetry Transport)是一种轻量级的发布/订阅消息…

JavaScript(7)——数组

JavaScript中数组的用法与Java差不多&#xff0c;但还是有一些区别 声明数组 语法: let 数组名 [数据1,数据2,数据...] let arr new Array(数据1,数据2,...数据n) 添加数据 数组.push()方法将一个或多个元素添加到数组末尾&#xff0c;并返回该数组新长度 <script>…

[k8s源码]1.client-go集群外部署

client-go是由k8s发布且维护的专门用于开发者和kubernetes交互的客户端库。它支持对k8s资源的CRUD操作&#xff08;create、read、update、delete&#xff09;&#xff0c;事件监听和处理&#xff0c;访问kubernetes集群的上下文和配置。 client go是独立于kubernetes集群之外…

SpringBoot项目架构实战之“网关zuul搭建“

第三章 网关zuul搭建 前言&#xff1a; 1、主要功能 zuul主要提供动态路由&#xff08;内置ribbon实现&#xff09;和过滤&#xff08;可以做统一鉴权过滤器、灰度发布过滤器、黑白名单IP过滤器、服务限流过滤器&#xff08;可以配合Sentinel实现&#xff09;&#xff09;功能…

css简单易懂的加载动画,看不会算我输好吧

效果展示 步骤 第一阶段 先准备结构&#xff0c;并且放置12个div&#xff0c;每一个div旋转30*n度&#xff0c; 做一个圆圈 dom <div class"modal"><div class"loading"><div class"item1"></div><div class&quo…

Vue 项目中 history 路由模式的使用

在最近帮客户开发的一个项目中&#xff0c;由于项目的特殊性&#xff0c;需要用到 Vue 中的 history路由模式。该模式使用时会涉及到“上传白屏”和“刷新 404 问题”。在帮助客户解决这两个问题的过程中&#xff0c;总结问题的解决方案并记录下来&#xff0c;希望能够保留这篇…

分布式训练

一、分布式计算 跟多GPU不同是&#xff1a;数据不是从主存拿的&#xff0c;是在分布式文件系统拿的&#xff0c;有多个工作站&#xff0c;工作站中有多个GPU&#xff0c;通过网络读取数据到GPU中&#xff0c;GPU通过网络接收到来自参数服务器的参数进行运算计算梯度&#xff0c…

怎样免费在线文字转语音?5个配音工具一键包揽

日常在享受有声读物的乐趣时&#xff0c;不知道大家是否也曾渴望将手中的精彩文本以生动的声音演绎出来&#xff1f; 无论是为了自我沉浸&#xff0c;还是为家人朋友创造独特的听觉盛宴&#xff0c;一款支持文本转语音的配音软件都能成为你的得力助手。它不仅能让文字跃然耳边…

【C++深度探索】全面解析多态性机制(一)

hello hello~ &#xff0c;这里是大耳朵土土垚~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#xff1a;大耳朵土土垚的博客 &#x1…

演唱会售票系统(Springboot+MySQL+Mybatis+BootStrap)

本演唱会售票系统结合了多个流行的技术栈&#xff0c;提供了全面的功能模块&#xff0c;包括用户和管理员两个角色。前端采用Bootstrap框架设计响应式界面&#xff0c;后端采用Spring Boot和MyBatis Plus实现业务逻辑和数据库操作&#xff0c;Sa-Token确保系统的安全性。通过这…

深入分析与解决4.3问题:iOS应用版本更新审核被拒原因解析

深入分析与解决4.3问题&#xff1a;iOS应用版本更新审核被拒原因解析 在iOS应用开发和发布过程中&#xff0c;遇到4.3问题&#xff08;设计 - 垃圾邮件&#xff09;是一个常见且令人头疼的情况。即使您的应用已成功发布其第一个版本&#xff0c;但在进行版本更新时&#xff0c…

【机器学习】初学者经典案例(随记)

&#x1f388;边走、边悟&#x1f388;迟早会好 一、概念 机器学习是一种利用数据来改进模型性能的计算方法&#xff0c;属于人工智能的一个分支。它旨在让计算机系统通过经验自动改进&#xff0c;而不需要明确编程。 类型 监督学习&#xff1a;使用带标签的数据进行训练&…

队列+二叉树广度优先

题目出自力扣-n叉树的层序遍历 我是原始人&#xff0c;递归写出一道题就只有递归思路&#xff0c;开始的想法是写深搜函数&#xff0c;传一个随着层数递增的int参数q&#xff0c;节点空就return&#xff0c;否则遍历所有节点&#xff0c;每个子节点又以q1为层数递归&#xff…

C++ | Leetcode C++题解之第226题翻转二叉树

题目&#xff1a; 题解&#xff1a; class Solution { public:TreeNode* invertTree(TreeNode* root) {if (root nullptr) {return nullptr;}TreeNode* left invertTree(root->left);TreeNode* right invertTree(root->right);root->left right;root->right …

js字符串文字添加不同颜色,replace的妙用$1...$9

更改字符串第一个数字为红色显示&#xff0c;第二个数字为黄色显示 $1匹配的是正则第一个括号选中的字符串&#xff0c;可以使用正则不断用括号匹配然后更改样式 const testStr "剩余12个名额&#xff0c;截止时间12月25日" testStr this.testStr.replace(/(\d)(\D…

简单状压dp(以力扣464为例)

目录 1.状态压缩dp是啥&#xff1f; 2.题目分析 3.解题思路 4.算法分析 5.代码分析 6.代码一览 7.结语 1.状态压缩dp是啥&#xff1f; 顾名思义&#xff0c;状态压缩dp就是将原本会超出内存限制的存储改用更加有效的存储方式。简而言之&#xff0c;就是压缩dp的空间。 …

设计模式探索:建造者模式

1. 什么是建造者模式 建造者模式 (Builder Pattern)&#xff0c;也被称为生成器模式&#xff0c;是一种创建型设计模式。 定义&#xff1a;将一个复杂对象的构建与表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。 建造者模式要解决的问题&#xff1a; 建造者模…