Hive常用命令总结


一、数据库操作

-- 创建数据库(默认路径)
CREATE DATABASE IF NOT EXISTS myhive;-- 指定路径创建数据库
CREATE DATABASE myhive2 LOCATION '/myhive2';-- 查看数据库信息
DESC DATABASE myhive;-- 删除数据库(强制删除表)
DROP DATABASE myhive CASCADE;

二、表操作

1. 内部表 vs 外部表
-- 内部表(数据由Hive管理)
CREATE TABLE internal_table (id BIGINT, name STRING);-- 外部表(数据由HDFS管理,删除表不删数据)
CREATE EXTERNAL TABLE external_table (id INT) 
LOCATION '/hive_table/external_table';
2. 分区表
-- 一级分区
CREATE TABLE partition_table (id INT, name STRING) 
PARTITIONED BY (month STRING);-- 多级分区
CREATE TABLE multi_partition (id INT) 
PARTITIONED BY (year STRING, month STRING, day STRING);-- 添加分区
ALTER TABLE partition_table ADD PARTITION (month='202305');-- 删除分区
ALTER TABLE partition_table DROP PARTITION (month='202304');-- 查看分区
SHOW PARTITIONS partition_table;
3. 分桶表
CREATE TABLE bucketed_table (id INT) 
CLUSTERED BY (id) INTO 4 BUCKETS;

三、数据操作

1. 数据加载
-- 从本地加载(复制文件)
LOAD DATA LOCAL INPATH '/path/data.txt' INTO TABLE my_table;-- 从HDFS加载(移动文件)
LOAD DATA INPATH '/hdfs/data.txt' INTO TABLE my_table;-- 动态分区加载(需先开启动态分区)
SET hive.exec.dynamic.partition.mode=nonstrict;
INSERT INTO partition_table PARTITION (month) 
SELECT id, name, month FROM source_table;
2. 数据插入
-- 单条插入(不推荐,生成小文件)
INSERT INTO TABLE test VALUES (1, 'Alice');-- 批量插入(推荐)
INSERT OVERWRITE TABLE target_table 
SELECT * FROM source_table;

四、查询优化

1. 避免全表扫描
-- 分区过滤
SELECT * FROM partition_table WHERE month='202305';-- 分桶过滤
SELECT * FROM bucketed_table WHERE id % 4 = 0;
2. JOIN优化
-- MapJoin(小表加载到内存)
SET hive.auto.convert.join=true;
SELECT /*+ MAPJOIN(small_table) */ * 
FROM big_table JOIN small_table ON big_table.id = small_table.id;
3. 数据倾斜处理
-- 分组聚合倾斜
SET hive.groupby.skewindata=true;-- JOIN倾斜(随机打散)
SELECT * 
FROM big_table a
JOIN (SELECT *, RAND() AS rnd FROM skewed_table 
) b ON a.id = b.id AND b.rnd % 10 = 0;

五、元数据与配置

1. 表结构查看
-- 查看表结构
DESC formatted my_table;-- 查看建表语句
SHOW CREATE TABLE my_table;
2. 性能调优参数
-- 启用压缩
SET hive.exec.compress.output=true;
SET mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.SnappyCodec;-- 合并小文件
SET hive.merge.mapfiles=true;        -- Map输出合并
SET hive.merge.tezfiles=true;        -- Tez输出合并
SET hive.merge.size.per.task=256000000;  -- 合并后文件大小

六、经验总结

  1. 分区 vs 分桶

    • 分区:按目录划分数据,适合范围过滤(如日期)。
    • 分桶:按文件划分数据,适合JOIN和采样。
  2. 外部表使用场景

    • 数据需被多组件共享(如Spark、Impala)。
    • 避免误删数据(DROP TABLE不删HDFS数据)。
  3. 小文件处理

    • 源头控制:写入时用INSERT OVERWRITE替代INSERT INTO
    • 事后合并ALTER TABLE table_name CONCATENATE;(仅ORC格式)。
  4. 动态分区陷阱

    • 必须配置hive.exec.dynamic.partition.mode=nonstrict
    • 避免分区数过多(超过hive.exec.max.dynamic.partitions)。
  5. 数据倾斜排查

    -- 检查Key分布
    SELECT key, COUNT(1) FROM table GROUP BY key ORDER BY COUNT(1) DESC LIMIT 10;
    

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

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

相关文章

Spring整合MyBatis详解

Spring整合MyBatis详解一、整合优势与核心思路1.1 整合优势1.2 核心整合思路二、环境搭建与依赖配置2.1 开发环境2.2 Maven依赖配置三、整合配置(核心步骤)3.1 数据库配置文件(db.properties)3.2 Spring配置文件(sprin…

Windows CMD(命令提示符)中最常用的命令汇总和实战示例

CMD命令汇总 下面是 Windows CMD(命令提示符)中最常用的命令汇总,共 30 个,包含说明和典型代码示例,适合日常开发、系统操作、文件管理、网络诊断等场景。一、文件与目录操作(最常用)命令说明示…

嵌入式硬件篇---舵机(示波器)

舵机是一种高精度的角度控制执行器件,广泛应用于机器人、航模、自动化设备等领域。其核心特点是能通过控制信号精准定位到特定角度(通常范围为 0-180,部分可到 360 连续旋转)。常见的舵机类型可根据结构、控制方式、用途等维度划分…

嵌入式硬件篇---按键

按键是电子系统中最基础的人机交互部件,通过机械或电子方式实现电路通断或状态切换。根据结构和工作原理的不同,常见按键可分为机械按键、薄膜按键、触摸按键等,以下详细介绍其工作原理、应用场景及电路特点:一、机械按键&#xf…

试用SAP BTP 06:AI服务-Data Attribute Recommendation

创建实例 方法一:BTP主控室-子账户-服务市场 输入实例配置信息,下一步 不用参数,下一步 审核实例,点击创建 实例创建完成后,创建服务键值 输入键值名称,点击 创建 方法二(建议)&…

训诂学中的“形音义互求”对NLP、知识图谱、注意力机制的启示

一、训诂学与现代人工智能结合的学术价值与技术潜力1. ​​训诂学的核心优势与AI语义分析的契合点​​训诂学作为中国传统学术中研究古代文献语义的核心学科,其方法论和理论框架对自然语言处理(NLP)的深层语义分析具有深刻的启发性和技术补充…

http基础一

1. HTTP是什么? HTTP(超文本传输协议,HyperText Transfer Protocol)是一种用于从万维网服务器传输超文本到本地浏览器的协议。它是无状态的客户端-服务器协议,通常在Web浏览器和Web服务器之间用于传输网页、图片、视频…

西门子 S7-1500 系列 PLC CPU 选型全指南:从类型到实战

在西门子 S7-1500 系列 PLC 的系统构建中,CPU 作为核心控制单元,其选型直接决定了自动化系统的性能、功能扩展性和适用场景。本文将系统解析 S7-1500 系列 CPU 的类型划分、核心参数、典型型号功能及选型流程,助你精准匹配工业控制需求。一、…

PaddleOCR 与 PaddleX 调试

PaddleOCR 与 PaddleX 调试1.安装1.1 环境准备1.2用Conda创建虚拟环境2.测试2.1发票测试2.2 手写汉字识别3.PaddleOCR 与 PaddleX 对比3.1 基于 PaddleX 部署 OCR 服务1.安装 PP OCR 文档 1.1 环境准备 根据自己操作系统按网上指导安装 ccache ccache --version是否已安装 …

imx6ull-系统移植篇11——U-Boot 移植(下)

目录 前言 移植过程 添加开发板默认配置文件 添加开发板对应的头文件 添加开发板对应的板级文件夹 修改Makefile 文件 修改imximage.cfg 文件 修改Kconfig 文件 修改MAINTAINERS 文件 修改 U-Boot 图形界面配置文件 编译 uboot LCD 驱动修改 修改源文件 修改头文…

30天打牢数模基础-模拟退火算法讲解

二、完整Python代码 import random import mathdef rastrigin(x, y):"""二维Rastrigin函数(目标函数,需最小化)参数:x: 自变量xy: 自变量y返回:函数值f(x,y)"""return 20 x**2 y**2 …

论文阅读 - FastInst

文章目录1 概述2 模型说明2.1 总体架构2.2 轻量pixel decoder2.3 实例激活引导的Query2.4 双路径更新策略2.5 GT掩码引导学习2.6 损失函数3 效果1 概述 FastInst是一种基于query的实时实例分割方法,它能以32.5FPS的实时速度在COCO测试集上达到40.5的AP。在实例分割…

Elasticsearch 9.x 高可用集群部署教程(3 主节点 + 3 数据节点)

Elasticsearch 9.x 高可用集群部署教程(3 主节点 + 3 数据节点) 1. 集群架构规划 生产环境中的 Elasticsearch 集群需要高可用性和容错能力。以下是基于 3 主节点 + 3 数据节点的架构规划: 节点分布: 主节点(Master Nodes):3 台(master-node-1, master-node-2, maste…

Unity_通过鼠标点击屏幕移动屏幕里的一个对象

文章目录一、获取到点击物体的Tansform(摁下鼠标左键的瞬间)二、移动点击的物体(摁着鼠标左键不放)三、松开左键清理被移动对象属性总结注:本文章只是学习总结的笔记,视频链接 一、获取到点击物体的Tansfor…

UDP中的单播,多播,广播(代码实现)

文章目录1. UDP 单播(Unicast)示例2. UDP 广播(Broadcast)示例3. UDP 多播(Multicast)示例3.1 多播发送方示例3.2 多播接收方示例总结1. UDP 单播(Unicast)示例 发送方向指定单个目…

神经网络:卷积层

神经网络 卷积操作 例子: 输入:二维图像 [1,2,0,3,1] [0,1,2,3,1] [1,2,1,0,0] [5,2,3,1,1] [2,1,0,1,1] 卷积核: [1,2,1] [0,1,0] [2,1,0] 然后需要将输入图像和卷积核转化为4维张量 为什么转为4维张量?因为卷积操作需要输入图像…

2.4 组件间通信Props(父传子)

父组件 在父组件模板上的子组件上加上属性值&#xff0c;属性值就是想要传递给子组件的信息。 例如&#xff1a; <template> <div class"Big-box"><testBox :personList"p"></testBox> </div> </template>子组件 子组…

从零开始学习 Redux:React Native 项目中的状态管理

Redux 是一个用于 JavaScript 应用程序的状态管理库&#xff0c;通常与 React 或 React Native 配合使用&#xff0c;帮助管理应用的状态和数据流。其核心原理是通过集中式的“单一数据源”来管理应用状态&#xff0c;避免组件之间的“层层传递”状态和副作用。 Redux 的原理单…

[特殊字符] CentOS 7 离线安装 MySQL 5.7 实验

&#x1f427; CentOS 7 离线安装 MySQL 5.7 实验 针对企业无互联网环境的系统&#xff0c;设计了如何在 CentOS 7 系统中&#xff0c;使用一台可以联网的主机&#xff08;NodeA&#xff09;为另一台无法联网的主机&#xff08;NodeB&#xff09;安装 MySQL 5.7 数据库及其依赖…

Redis 概率型数据结构实战指南

1. 为什么要用「近似」&#xff1f; 随着业务量爆发式增长&#xff0c;精确统计 的内存或 CPU 成本可能难以接受。例如&#xff1a; 统计一天内 唯一 IP 数 —— 用 SET 精确去重&#xff0c;百万 IP→占用数百 MB。统计海量商品销量、实时计算 P99 延迟、获取 TOP-N 热门页面……