活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 安全隔离版OpenClaw NEW OpenClaw云服务器专属“龙虾“套餐低至1.5折起
  • 聚力AI赋能 天翼云大模型专项 大模型特惠专区·Token Plan 轻享包低至9.9元起
  • 青云志云端助力计划 NEW 一站式科研助手,海外资源安全访问平台,助力青年翼展宏图,平步青云
  • 企业出海解决方案 NEW 助力您的业务扬帆出海,通达全球!
  • 天翼云信创专区 NEW “一云多芯、一云多态”,国产化软件全面适配,国产操作系统及硬件芯片支持丰富
  • 云上钜惠 爆款云主机全场特惠,2核4G只要1.8折起!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

息壤智算

领先开放的智算服务平台,提供算力、平台、数据、模型、应用“五位一体”智算服务体系,构建全流程的AI基础设施能力
星辰TokenHub
  • 模型广场
  • 体验中心
  • 服务接入
星辰MaaS平台
  • 星辰MaaS智能体平台
  • 星辰大模型
大模型
  • glm-5.3-flash
  • GLM-5.2
  • deepseek-v4-pro-0813
  • deepseek-v4-flash-0731-new
  • qwen3.8-flash
AI Store
  • 算力市场
  • 模型市场
  • 应用市场
应用托管
  • 天翼云DramaFlow2.0
  • 应用实例
科研助手
  • 开发机
  • 并行计算
训推服务
  • 模型开发
  • 训练任务
  • 服务部署
智能体引擎
  • 智能体引擎
可信数据空间
  • 可信数据空间
公共算力服务
  • 裸金属
  • 定制裸金属
智算一体机
  • 智算一体机
模型适配专家服务
  • 模型适配专家服务
算力服务商
  • 入驻算力服务商

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入AI Store公有云生态专区智云上海应用生态专区
建站工具
  • 新域名服务
  • SSL证书
  • 翼建站
企业办公
  • 智教云电脑
  • WPS 365 天翼云版
灾备迁移
  • 云管家2.0
  • 翼备份(SaaS版)
  • 琥珀数据压缩归档服务
智慧教育
  • 智擎思政平台(个人版)
  • 智擎研学平台(个人基础版)

定价

协助您快速了解云产品计费模式、价格详情,轻松预估上云成本
价格计算器
  • 动态测算产品价格
定价策略
  • 快速了解计费模式

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
天翼云培训认证
  • 天翼云学堂
天翼信创云专区
  • 信创云专区
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
培训与认证
  • 天翼云学堂
  • 天翼云认证
开源社区
  • 魔乐社区
  • OpenTeleDB

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 服务保障
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家
我要反馈
  • 建议与反馈
  • 用户体验官
信息公告
  • 客户公告

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2026智能云生态大会
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 息壤智算
  • 产品
  • 解决方案
  • 应用商城
  • 定价
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心
      文档中心

      翼MapReduce

      翼MapReduce

      • 翼MapReduce

      无数据

        • 产品动态
        • 产品介绍
        • 产品定义
        • 版本概述
        • 产品优势
        • 功能特性
        • 多租户
        • 安全增强
        • 组件WEB UI便捷访问
        • 可靠性增强
        • 集群管理
        • 应用场景
        • 术语解释
        • 与其他产品的关系
        • 权限管理
        • 约束与限制
        • 安全
        • 责任共担
        • 身份认证与访问控制
        • 技术支持范围
        • 计费说明
        • 资源节点
        • 产品规格
        • 计费模式
        • 计费价格
        • 购买
        • 变更
        • 续订
        • 退订
        • 快速入门
        • 如何使用翼MR
        • 创建集群
        • 上传示例数据和程序
        • 添加作业
        • 从零开始使用Kerberos认证集群
        • 删除集群
        • 手动修改配置建议书
        • 组件依赖关系表
        • 用户指南
        • 准备用户
        • 创建翼MapReduce操作用户
        • LDAP用户同步
        • 配置集群
        • 创建方式简介
        • 快速创建集群
        • 创建数据湖集群
        • 创建数据分析集群
        • 创建数据服务集群
        • 创建实时数据流集群
        • 创建自定义集群
        • 管理数据连接
        • 配置元数据库
        • 管理集群
        • 登录集群
        • 翼MapReduce集群节点简介
        • 登录集群节点
        • 集群概览
        • 集群列表简介
        • 查看集群状态
        • 查看集群基本信息
        • 查看集群监控指标
        • 管理组件和主机监控
        • 资源洞察
        • 云监控服务
        • 健康检查
        • 节点管理
        • 管理节点操作
        • 配置升级
        • 节点扩容
        • 节点缩容
        • 新增节点组
        • 磁盘扩容
        • 远程连接
        • 绑定/解绑弹性IP
        • 绑定/解绑IPv6带宽
        • 组件管理
        • 对象管理简介
        • 查看配置
        • 管理服务操作
        • 集群服务管理
        • 配置服务参数
        • 同步服务配置
        • 管理角色实例操作
        • 启动及停止集群
        • 下载集群的配置数据
        • 支持滚动重启
        • 作业管理
        • 运行MapReduce作业
        • 运行SparkSubmit作业
        • 运行HiveSQL作业
        • 运行SparkSQL作业
        • 运行Flink作业
        • 运行Kafka作业
        • 运行Hue任务
        • 查看主机和组件日志
        • 告警管理
        • 查看告警列表
        • 日志与审计
        • 集群日志
        • 云日志服务
        • 云审计
        • 使用翼MR客户端
        • 下载客户端
        • 安装客户端
        • 各组件客户端使用实践
        • 使用YARN客户端
        • 使用Flink客户端
        • 使用HBase客户端
        • 使用HDFS客户端
        • 使用Hive客户端
        • 使用Kafka客户端
        • 使用Trino客户端
        • 使用ZooKeeper客户端
        • 使用Kyuubi客户端
        • 使用Spark客户端
        • 访问组件Web页面
        • 开源组件Web站点
        • 开源组件端口列表
        • 通过弹性公网IP访问
        • 翼MR Manager操作指导
        • 从这里开始
        • 翼MR Manager入门指导
        • 首页
        • 首页概述
        • 资源概览
        • 资源概览概述
        • 集群服务
        • 集群服务管理概述
        • 集群服务详情页面概述
        • 启动、停止所有集群服务
        • 启动、停止单集群服务
        • 滚动重启单个集群服务
        • 启动、停止、重启实例
        • 滚动停止、滚动重启实例
        • 实例置维护/取消维护
        • 查看集群服务配置
        • 新增配置组
        • 查看配置组详情
        • 删除配置组
        • 查看配置详情
        • 新增配置
        • 编辑配置
        • 配置项对比
        • 配置文件预览
        • 下载配置文件
        • 配置文件历史对比
        • 查看配置历史版本
        • 删除配置
        • 配置同步
        • 查看配置状态
        • 重新同步
        • 配置回滚
        • 查看运维操作历史
        • 查看告警历史
        • 查看集群服务大屏
        • 集群服务健康检查
        • 主机
        • 主机管理页面概述
        • 主机详情页面概述
        • 主机置维护、取消维护
        • 查看主机状态
        • 查看主机实例列表
        • 查看主机实例列表-实例操作
        • 查看主机告警历史
        • 主机健康检查
        • 租户与资源
        • 租户与资源概述
        • 监控与告警
        • 指标查询
        • 告警历史
        • 告警规则-告警规则概述
        • 告警规则-告警规则详情
        • 运维与配置
        • 运维历史-查看运维历史
        • 运维历史-数据展示设置
        • 流水线历史-流水线历史概述
        • 流水线历史-查看流水线运行详情
        • 配置管理-主密码设置
        • 配置管理-配置管理概述
        • 配置管理-新增配置组
        • 配置管理-查看配置组详情
        • 配置管理-删除配置组
        • 配置管理-新增配置
        • 配置管理-查看配置详情
        • 配置管理-编辑配置
        • 配置管理-配置项对比
        • 配置管理-配置文件预览
        • 配置管理-下载配置文件
        • 配置管理-配置文件历史对比
        • 配置管理-查看配置历史版本
        • 配置管理-删除配置
        • 配置管理-配置同步
        • 配置管理-查看配置状态
        • 配置管理-重新同步
        • 配置管理-配置回滚
        • 配置历史-配置历史概述
        • 配置历史-查询配置历史
        • 配置历史-查看配置详情
        • 配置历史-查看配置状态
        • 配置历史-查看配置对比
        • 配置历史-重新同步
        • 配置同步历史-配置同步历史概述
        • 配置同步历史-查看配置同步状态
        • 安全性说明
        • 安全认证原理和认证机制
        • 高危操作一览表
        • 服务配置修改建议
        • 服务基础配置修改建议
        • 多数据盘-服务配置修改建议
        • Master扩容-服务配置修改建议
        • ZooKeeper扩容
        • HDFS扩容
        • YARN扩容
        • Hive扩容
        • 自定义服务配置
        • 组件操作指南
        • OpenLDAP
        • OpenLDAP组件概述
        • OpenLDAP使用说明
        • OpenLDAP常见问题
        • OpenLDAP故障诊断
        • Kerberos
        • Kerberos组件概述
        • Kerberos安全凭证生成
        • Kerberos客户端使用
        • Kerberos常见问题
        • Kerberos故障诊断
        • ZooKeeper
        • ZooKeeper组件概述
        • ZooKeeper客户端使用
        • 配置ZooKeeper ZNode ACL
        • ZooKeeper常用配置
        • ZooKeeper性能调优
        • ZooKeeper运维管理
        • ZooKeeper最佳实践
        • ZooKeeper常见问题
        • ZooKeeper故障诊断
        • HDFS
        • HDFS组件概览
        • HDFS用户管理与认证
        • HDFS客户端使用
        • HDFS日志介绍
        • HDFS数据安全
        • HDFS权限管理
        • HDFS配额管理
        • HDFS容量规划
        • HDFS数据均衡
        • HDFS性能优化
        • HDFS常见问题
        • YARN
        • YARN组件概述
        • YARN客户端使用
        • YARN日志介绍
        • 配置NodeManager可使用资源
        • YARN队列权限管理
        • YARN性能调优
        • YARN常见问题
        • Hudi
        • Hudi组件概述
        • Hudi使用说明
        • Hive集成使用
        • Flink集成使用
        • Hudi性能调优
        • Hudi运维管理
        • Hudi常见问题
        • Iceberg
        • Iceberg组件概述
        • Iceberg客户端使用
        • Iceberg性能调优
        • Iceberg常见问题
        • HBase
        • HBase组件概述
        • HBase用户管理与认证
        • HBase客户端使用
        • HBase性能调优
        • HBase运维管理
        • HBase WebUI
        • HBase最佳实践
        • HBase常见问题
        • HBase故障诊断
        • Flink
        • Flink组件概述
        • Flink用户管理与认证
        • Flink客户端使用
        • Flink性能调优
        • Flink运维管理
        • Flink WebUI
        • Flink最佳实践
        • Flink CDC
        • Flink常见问题
        • Flink故障诊断
        • Ranger
        • Ranger基本原理
        • 登录Ranger的WebUI界面
        • Ranger权限管控
        • 启用Ranger权限管控
        • Ranger基于User的权限管控
        • Ranger基于Group的权限管控
        • Ranger基于Role的权限管控
        • Ranger管控UDF
        • Ranger数据脱敏
        • Ranger行级过滤
        • 查看Ranger审计日志信息
        • Hive
        • Hive组件概述
        • Hive客户端使用
        • HQL基本语法说明
        • Hive典型应用示例
        • Java SDK接口
        • Hive特殊功能说明
        • Hive性能调优
        • Hive运维管理
        • Hive常见问题
        • Spark
        • Spark组件概述
        • Spark客户端使用
        • Spark性能调优
        • Spark运维管理
        • Spark常见问题
        • Tez
        • Tez组件概述
        • Tez使用说明
        • Tez性能调优
        • Tez运维管理
        • Tez常见问题
        • TezUI
        • TezUI组件概述
        • TezUI访问方式
        • TezUI功能说明
        • TezUI运维管理
        • TezUI常见问题
        • Kyuubi
        • Kyuubi组件概述
        • Kyuubi客户端使用
        • Kyuubi性能调优
        • Kyuubi运维管理
        • Kyuubi常见问题
        • Amoro
        • Amoro组件概述
        • Amoro用户管理与认证
        • Amoro客户端使用
        • Amoro性能调优
        • Amoro运维管理
        • Amoro最佳实践
        • Amoro常见问题
        • Amoro故障诊断
        • 最佳实践
        • Kibana用户体验、性能优化
        • ES集群规划、性能优化
        • Kafka性能调优
        • 常见问题
        • 产品咨询类
        • 翼MR支持什么类型的分布式存储?
        • 什么是区域和可用区?
        • 翼MR是否支持更换网段?
        • 翼MR集群内节点是否支持降配操作?
        • 翼MR集群是否支持Hive on Spark?
        • 不同版本的Hive之间是否可以兼容?
        • 翼MR是否支持Hive on Tez和Hive on Kudu?
        • 翼MR集群内节点上/var/log目录中的日志文件能否清理?
        • Kafka支持的访问协议类型有哪些?
        • 翼MR产品支持Hive元数据库使用内置MySQL类型吗?
        • 是否支持修改翼MR集群中节点的IP地址?
        • 翼MR管理控制台和翼MR Manager页面区别与联系?
        • 计费类
        • 购买类
        • 操作类
        • 账号密码类
        • 账号权限类
        • 集群创建类
        • 集群管理类
        • 使用类FAQ
        • 如何查看所有集群?
        • 如何查看主机和组件日志?
        • 如何进行集群服务配置调优?
        • 大数据业务开发
        • 执行Spark任务报内存不足告警如何处理?
        • HBase表如何设置和修改数据保留期?
        • 如何查看HBase日志?
        • HBase支持的压缩算法有哪些?
        • Kafka目前支持的访问协议类型有哪些?
        • 消费Kafka Topic时报错“Not Authorized to access group XXX”如何处理?
        • 翼MR如何连接spark-shell?
        • 翼MR如何连接spark-beeline?
        • Spark job对应的执行日志保存在哪里?
        • Spark.yarn.executor.memoryOverhead设置不生效如何处理?
        • SparkSQL访问Hive分区表启动Job前耗时较长如何处理?
        • 如何获取Spark Jar包?
        • Trino如何配置其他数据源?
        • 性能优化类
        • 组件性能
        • Doris性能优化后TPC-H测试结果
        • 翼MR搜索引擎组件性能对比测试结果
        • Spark组件优化后TPC-DS测试结果
        • API参考
        • API使用说明
        • API概览
        • 如何调用API
        • 构造请求
        • 认证鉴权
        • API
        • 2023-11-02
        • 查询集群节点组详情V2
        • 创建集群
        • 根据id查询集群信息V2
        • 扩容集群
        • 集群信息分页查询V2
        • 根据集群id查询节点组信息V2
        • 退订集群
        • 元数据概览
        • 元数据信息查询
        • 视频专区
        • 相关协议
        • 翼MapReduce产品服务协议
        • 翼MapReduce产品服务等级协议
          无相关产品

          本页目录

          帮助中心 翼MapReduce 组件操作指南 Hive HQL基本语法说明
          HQL基本语法说明
          更新时间 2026-10-12 11:43:55
          • 新浪微博
          • 微信
            扫码分享
          • 复制链接
          最近更新时间: 2026-10-12 11:43:55
          分享文章
          • 新浪微博
          • 微信
            扫码分享
          • 复制链接
          本章节介绍HQL基本语法。

          创建数据库和表

          本小节主要介绍如何使用HQL 创建数据库和表。在 Hive 中创建表主要有两种方式:

          1、自定义表结构,同时使用 EXTERNAL 关键字来区分内部表和外部表:

          1)内部表:数据的生命周期完全由 Hive 管理时,drop 命令会同时删除元数据和表数据;

          2)外部表:当数据需要被多种工具(如 Pig 等)共同处理时,应该使用外部表。删除外部表时,只删除元数据。

          2、根据已有表创建新表:

          1)CREATE LIKE:该语句可以完全复制原有表的结构,包括存储格式,但不会导入数据;

          2)CTAS:根据查询结果创建新表,使用 CREATE AS SELECT 语句可以在复制原表结构的同时指定要复制哪些字段。

          Hive 建表基本语法如下:

          CREATE [EXTERNAL] TABLE <table_name>
          (<col_name> <data_type> [column_constraint_specification] [COMMENT col_comment],
          [<col_name> <data_type> ...]
          )
          -- 表注释
          [COMMENT table_comment]
          -- 指定分区键和数据类型
          [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
          -- 指定分桶信息
          [CLUSTERED BY (col_name, col_name, ...)
          [SORTED BY (col_name [ASC|DESC], ...)]
          INTO num_buckets BUCKETS]
          -- 指定行信息
          [ROW FORMAT <row_format>]
          -- 指定存储格式
          [STORED AS TEXTFILE|ORC|CSVFILE]
          -- 指定表的位置
          [LOCATION <file_path>]
          -- 指定表属性
          [TBLPROPERTIES ('<property_name>'='<property_value>', ...)]
          -- 指定是否从查询中创建表
          [AS select_statement];
          file_format:
            : SEQUENCEFILE
            | TEXTFILE -- (Default, depending on configuration)
            | RCFILE -- (Note: Available in Hive 0.6.0 and later)
            | ORC -- (Note: Available in Hive 0.11.0 and later)
            | PARQUET -- (Note: Available in Hive 0.13.0 and later)
            | AVRO -- (Note: Available in Hive 0.14.0 and later)
            | JSONFILE -- (Note: Available in Hive 4.0.0 and later)
            | INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classname

          示例如下:

          -- 内部表示例
          CREATE TABLE page_view
          (
              viewTime INT,
              userid BIGINT,
              page_url STRING,
              referrer_url STRING,
              ip STRING COMMENT 'IP Address of the User'
          )
          COMMENT 'This is the page view table'
          PARTITIONED BY (dt STRING, country STRING)
          ROW FORMAT DELIMITED
          FIELDS TERMINATED BY '\001'
          STORED AS SEQUENCEFILE;
          
          -- 外部表示例
          CREATE EXTERNAL TABLE page_view
          (
              viewTime INT,
              userid BIGINT,
              page_url STRING,
              referrer_url STRING,
              ip STRING COMMENT 'IP Address of the User',
              country STRING COMMENT 'country of origination'
          )
          COMMENT 'This is the staging page view table'
          ROW FORMAT DELIMITED FIELDS TERMINATED BY '\054'
          STORED AS TEXTFILE
          LOCATION '<hdfs_location>';

          插入数据

          Hive 支持两种插入数据的方式:SQL 直接插入数据、从查询中插入数据。

          SQL 直接插入数据的语法如下:

          INSERT INTO TABLE <tablename>
          [PARTITION (partcol1[=val1], partcol2[=val2] ...)]
          VALUES values_row [, values_row...];

          一个简短的示例如下:

          CREATE TABLE students
          (
              name VARCHAR(64),
              age INT,
              gpa DECIMAL(3, 2)
          )
          CLUSTERED BY (age) INTO 2 BUCKETS
          STORED AS ORC;
          
          INSERT INTO TABLE students
          VALUES ('fred flintstone', 35, 1.28),
          ('barney rubble', 32, 2.32);

          Hive 也支持从查询结果中插入数据,它的基本语法如下:

          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;

          一个简短的示例如下:

          FROM page_view_stg pvs
          INSERT OVERWRITE TABLE page_view PARTITION(dt='2008-06-08', country)
          SELECT pvs.viewTime, pvs.userid, pvs.page_url, pvs.referrer_url, null, null, pvs.ip, pvs.cnt;

          查询数据

          Hive 查询语法如下:

          -- CTE
          -- CTE(Common Table Expression),即公共表表达式,是一种通过 WITH 子句定义的临时结果集,
          -- 可以在查询的其余部分中被引用。CTE 提高了查询的可读性和复用性,
          -- 尤其是在复杂查询或递归查询中非常有用。
          [WITH CommonTableExpression (, CommonTableExpression)*]
          -- DISINTCT 去重
          SELECT [ALL | DISTINCT] <select_expr>, <select_expr>, ...
          FROM <tbl_name>
          -- 过滤
          [WHERE where_condition]
          -- 分组
          [GROUP BY col_list]
          -- 做全局排序,无论对 reducer 的个数做什么样的设置都会是 1
          [ORDER BY col_list]
          -- SORT BY 区内排序,对每一个 reducer 产生一个排序文件,每个 reducer 内部进行排序
          -- DISTRIBUTE BY 控制Map端如何发送数据到Reduce端
          -- 如果SORT BY 和 DISTRIBUTE BY 字段相同可以使用CLUSTER BY代替
          [CLUSTER BY col_list
          | [DISTRIBUTE BY col_list] [SORT BY col_list]
          ]
          -- 输出数量限制
          [LIMIT number]

          连接查询。Hive 支持多种 Join:

          1、INNER JOIN:内关联,JOIN 关键字的默认行为,只能返回关联上的结果;

          2、LEFT OUTER JOIN:左外关联,以关键字前面的表作为主表,和其他表进行关联,返回记录数和主表的一致,关联不上的字段置为 NULL;

          3、RIGHT OUTER JOIN:右外关联,以关键词后面的表作为主表,和前面的表做关联,返回记录数和主表一致,关联不上的字段为 NULL;

          4、FULL OUTER JOIN:全外关联,以两个表的记录为基准,返回两个表的记录去重之和,关联不上的字段为 NULL。

          Hive 中 Join 的基本语法如下:

          join_table:
              table_reference [INNER] JOIN table_factor [join_condition]
            | table_reference {LEFT|RIGHT|FULL} [OUTER] JOIN table_reference join_condition
            | table_reference LEFT SEMI JOIN table_reference join_condition
            | table_reference CROSS JOIN table_reference [join_condition] (as of Hive 0.10)
          
          table_reference:
              table_factor
            | join_table
          
          table_factor:
              tbl_name [alias]
            | table_subquery alias
            | ( table_references )
          
          join_condition:
              ON expression

          一个简短的示例如下:

          -- 多表内关联
          SELECT *
          FROM table1
          JOIN table2
          ON table1.id = table2.id;
          
          -- 左外关联
          SELECT *
          FROM table1
          LEFT JOIN table2
          ON table1.id = table2.id;
          
          -- 右外关联
          SELECT *
          FROM table1
          RIGHT JOIN table2
          ON table1.id = table2.id;
          
          -- 全外关联
          SELECT *
          FROM table1
          FULL OUTER JOIN table2
          ON table1.id = table2.id;

          分组查询。Hive 使用 GROUP BY 关键字进行分组查询,它的语法如下:

          SELECT expression (, expression)* FROM src groupByClause?

          一个简短的示例如下:

          SELECT pv_users.gender, COUNT(DISTINCT pv_users.userid), COUNT(DISTINCT pv_users.ip)
          FROM pv_users
          GROUP BY pv_users.gender;

          注意

          SELECT 后面的非聚合列必须出现在 GROUP BY 表达式中。

          综合示例。以TPCDS Q23 为例展示一个综合查询示例:

          WITH frequent_ss_items AS
          (SELECT SUBSTR(i_item_desc, 1, 30) itemdesc, i_item_sk item_sk, d_date solddate, COUNT(*) cnt
          FROM store_sales
              , date_dim
              , item
          WHERE ss_sold_date_sk = d_date_sk
          AND ss_item_sk = i_item_sk
          AND d_year IN (1999, 1999 + 1, 1999 + 2, 1999 + 3)
          GROUP BY SUBSTR(i_item_desc, 1, 30), i_item_sk, d_date
          HAVING COUNT(*) > 4),
          max_store_sales AS
          (SELECT MAX(csales) tpcds_cmax
          FROM (SELECT c_customer_sk, SUM(ss_quantity * ss_sales_price) csales
          FROM store_sales
              , customer
              , date_dim
          WHERE ss_customer_sk = c_customer_sk
          AND ss_sold_date_sk = d_date_sk
          AND d_year IN (1999, 1999 + 1, 1999 + 2, 1999 + 3)
          GROUP BY c_customer_sk)),
          best_ss_customer AS
          (SELECT c_customer_sk, SUM(ss_quantity * ss_sales_price) ssales
          FROM store_sales
              , customer
          WHERE ss_customer_sk = c_customer_sk
          GROUP BY c_customer_sk
          HAVING SUM(ss_quantity * ss_sales_price) > (95 / 100.0) * (SELECT *
          FROM max_store_sales))
          SELECT SUM(sales)
          FROM (SELECT cs_quantity * cs_list_price sales
          FROM catalog_sales
              , date_dim
          WHERE d_year = 1999
          AND d_moy = 1
          AND cs_sold_date_sk = d_date_sk
          AND cs_item_sk IN (SELECT item_sk FROM frequent_ss_items)
          AND cs_bill_customer_sk IN (SELECT c_customer_sk FROM best_ss_customer)
          UNION ALL
          SELECT ws_quantity * ws_list_price sales
          FROM web_sales
              , date_dim
          WHERE d_year = 1999
          AND d_moy = 1
          AND ws_sold_date_sk = d_date_sk
          AND ws_item_sk IN (SELECT item_sk FROM frequent_ss_items)
          AND ws_bill_customer_sk IN (SELECT c_customer_sk FROM best_ss_customer))
          LIMIT 100;
          WITH frequent_ss_items AS
          (SELECT SUBSTR(i_item_desc, 1, 30) itemdesc, i_item_sk item_sk, d_date solddate, COUNT(*) cnt
          FROM store_sales
              , date_dim
              , item
          WHERE ss_sold_date_sk = d_date_sk
          AND ss_item_sk = i_item_sk
          AND d_year IN (1999, 1999 + 1, 1999 + 2, 1999 + 3)
          GROUP BY SUBSTR(i_item_desc, 1, 30), i_item_sk, d_date
          HAVING COUNT(*) > 4),
          max_store_sales AS
          (SELECT MAX(csales) tpcds_cmax
          FROM (SELECT c_customer_sk, SUM(ss_quantity * ss_sales_price) csales
          FROM store_sales
              , customer
              , date_dim
          WHERE ss_customer_sk = c_customer_sk
          AND ss_sold_date_sk = d_date_sk
          AND d_year IN (1999, 1999 + 1, 1999 + 2, 1999 + 3)
          GROUP BY c_customer_sk)),
          best_ss_customer AS
          (SELECT c_customer_sk, SUM(ss_quantity * ss_sales_price) ssales
          FROM store_sales
              , customer
          WHERE ss_customer_sk = c_customer_sk
          GROUP BY c_customer_sk
          HAVING SUM(ss_quantity * ss_sales_price) > (95 / 100.0) * (SELECT *
          FROM max_store_sales))
          SELECT c_last_name, c_first_name, sales
          FROM (SELECT c_last_name, c_first_name, SUM(cs_quantity * cs_list_price) sales
          FROM catalog_sales
              , customer
              , date_dim
          WHERE d_year = 1999
          AND d_moy = 1
          AND cs_sold_date_sk = d_date_sk
          AND cs_item_sk IN (SELECT item_sk FROM frequent_ss_items)
          AND cs_bill_customer_sk IN (SELECT c_customer_sk FROM best_ss_customer)
          AND cs_bill_customer_sk = c_customer_sk
          GROUP BY c_last_name, c_first_name
          UNION ALL
          SELECT c_last_name, c_first_name, SUM(ws_quantity * ws_list_price) sales
          FROM web_sales
              , customer
              , date_dim
          WHERE d_year = 1999
          AND d_moy = 1
          AND ws_sold_date_sk = d_date_sk
          AND ws_item_sk IN (SELECT item_sk FROM frequent_ss_items)
          AND ws_bill_customer_sk IN (SELECT c_customer_sk FROM best_ss_customer)
          AND ws_bill_customer_sk = c_customer_sk
          GROUP BY c_last_name, c_first_name)
          ORDER BY c_last_name, c_first_name, sales
          LIMIT 100;

          常用函数

          日期和时间函数:

          1、CURRENT_DATE():返回当前日期;

          2、DATE_ADD():将日期加上指定的天数;

          3、DATE_SUB():将日期减去指定的天数;

          4、UNIX_TIMESTAMP():返回当前时间的 Unix 时间戳;

          5、FROM_UNIXTIME():将 Unix 时间戳转换为日期格式。

          字符串函数:

          1、CONCAT():连接多个字符串;

          2、SUBSTRING():返回字符串的子串;

          3、LENGTH():返回字符串的长度;

          4、TRIM():去掉字符串首尾的空格;

          5、INSTR():返回子字符串在字符串中的位置。

          聚合函数:

          1、COUNT():返回某列的记录数;

          2、SUM():返回某列的总和;

          3、AVG():返回某列的平均值;

          4、COLLECT_LIST():返回包含所有元素的列表(不去重);

          5、MAX():返回某列的最大值。

          集合函数。此类函数用于处理数组、映射等数据结构:

          1、SIZE():返回集合的大小;

          2、ARRAY():创建数组;

          3、MAP():创建键值对映射;

          4、MAP_KEYS():返回映射的所有键;

          5、MAP_VALUES():返回映射的所有值。

          其他函数:

          1、CAST():将一种数据类型转换为另一种;

          2、NVL():如果第一个参数为 NULL,返回第二个参数;

          3、CASE WHEN:实现复杂的条件判断;

          4、ROUND():四舍五入;

          5、CEIL():向上取整。

          函数使用注意事项:

          1、TO_DATE() 函数将时间戳转换成 DATE 类型,只保留年月日,如果想要精确到秒,需要使用 UNIX_TIMESTAMP() 或 FROM_UNIXTIME();

          2、所有的字符串函数如果参数有 null,则结果必为 null,因此使用时需要 IFNULL() 或 COALESCE() 来处理;

          3、SUBSTR() 方法的索引从 1 开始,而不是从 0 开始;

          4、插入 STRUCT 类型数据时要用 namestruct 函数,而不是 struct() 函数;

          5、HIVE 类型转换时需要注意 BOOLEAN 类型,该类型只能和 void 类型以及自身进行隐式转换;

          6、针对数组类型,访问越界时会返回 NULL;

          7、/ 运算符是浮点数运算,DIV 函数是整数除法,结果会去除小数部分;

          8、窗口函数依赖于 ORDER BY 和 PARTITION BY 来确定结果的顺序和分组。如果顺序不正确,结果可能不符合预期;

          9、对于 NULL 处理,COALESCE() 是更好的选择,它会返回第一个非 NULL 值;

          10、CURRENT_TIMESTAMP 默认采用的是 UTC 时间。

          函数使用示例。前置准备如下:

          -- 1. 创建测试表

          CREATE TABLE test_table
          (
              id INT,
              name STRING,
              salary DOUBLE,
              join_date DATE,
              scores ARRAY<INT>,
              attributes MAP<STRING, STRING>
          );

          -- 2. 插入一些测试数据

          INSERT INTO test_table
          VALUES (1, 'Alice', 5000.50, '2022-01-15', ARRAY(80, 90, 95), MAP('age', '30', 'city', 'New York')),
          (2, 'Bob', 6000.75, '2021-11-23', ARRAY(70, 85), MAP('age', '28', 'city', 'Los Angeles')),
          (3, 'Charlie', 7000.00, '2023-03-10', ARRAY(95, 85, 92), MAP('age', '35', 'city', 'Chicago'));

          测试用例1:测试 CURRENT_DATE() 和 DATE_ADD(),返回当前日期和加入天数后的日期:

          SELECT current_date() AS now,
          DATE_ADD(join_date, 10) AS date_after_10_days,
          DATE_SUB(join_date, 5) AS date_before_5_days
          FROM test_table;

          测试结果如下:

          -- | 2024-10-25 | 2022-01-25 | 2022-01-10 |
          -- | 2024-10-25 | 2021-12-03 | 2021-11-18 |
          -- | 2024-10-25 | 2023-03-20 | 2023-03-05 |

          测试用例2:测试 UNIX_TIMESTAMP() 和 FROM_UNIXTIME():

          SELECT UNIX_TIMESTAMP() AS current_unix_time,
          FROM_UNIXTIME(UNIX_TIMESTAMP()) AS current_time_in_readable_format
          FROM test_table;

          测试结果如下:

          -- | 1729825446 | 2024-10-25 04:24:06 |
          -- | 1729825446 | 2024-10-25 04:24:06 |
          -- | 1729825446 | 2024-10-25 04:24:06 |

          测试用例3:测试 CONCAT()、LENGTH()、SUBSTRING()、TRIM() 和 INSTR():

          SELECT name,
          CONCAT('Employee: ', name) AS full_name,
          LENGTH(name) AS name_length,
          SUBSTRING(name, 1, 3) AS name_first_3_chars,
          TRIM(' Alice ') AS trimmed_name,
          INSTR(name, 'li') AS position_of_substring
          FROM test_table;

          测试结果如下:

          -- | Alice   | Employee: Alice   | 5 | Ali | Alice | 2 |
          -- | Bob     | Employee: Bob     | 3 | Bob | Alice | 0 |
          -- | Charlie | Employee: Charlie | 7 | Cha | Alice | 5 |

          测试用例4:测试 COUNT()、SUM()、AVG()、COLLECT_LIST()、MAX():

          SELECT COUNT(*) AS total_employees,
          SUM(salary) AS total_salary,
          ROUND(AVG(salary), 2) AS average_salary,
          MAX(salary) AS highest_salary,
          COLLECT_LIST(name) AS employee_names
          FROM test_table;

          测试结果如下:

          -- | 3 | 18001.25 | 6000.42 | 7000.0 | ["Alice","Bob","Charlie"] |

          测试用例5:测试 SIZE()、ARRAY()、MAP()、MAP_KEYS()、MAP_VALUES():

          SELECT id,
          SIZE(scores) AS number_of_scores,
          ARRAY(1, 2, 3) AS new_array,
          MAP('key1', 'value1', 'key2', 'value2') AS new_map,
          MAP_KEYS(attributes) AS attribute_keys,
          MAP_VALUES(attributes) AS attribute_values
          FROM test_table;

          测试结果如下:

          -- | 1 | 3 | [1,2,3] | {"key1":"value1","key2":"value2"} | ["age","city"] | ["30","New York"] |
          -- | 2 | 2 | [1,2,3] | {"key1":"value1","key2":"value2"} | ["age","city"] | ["28","Los Angeles"] |
          -- | 3 | 3 | [1,2,3] | {"key1":"value1","key2":"value2"} | ["age","city"] | ["35","Chicago"] |

          测试用例6:测试 CAST()、NVL()、CASE WHEN、ROUND()、CEIL():

          SELECT id,
          CAST(salary AS STRING) AS salary_as_string,
          NVL(NULL, 'Default Value') AS nvl_test,
          CASE
          WHEN salary > 6000 THEN 'High'
          ELSE 'Low'
          END AS salary_category,
          ROUND(salary, 0) AS rounded_salary,
          CEIL(salary) AS ceil_salary
          FROM test_table;

          测试结果如下:

          -- | 1 | 5000.5 | Default Value | Low  | 5001 | 5001 |
          -- | 2 | 6000.75 | Default Value | High | 6001 | 6001 |
          -- | 3 | 7000.0 | Default Value | High | 7000 | 7000 |

          测试用例7:综合测试。先插入更多的数据:

          INSERT OVERWRITE TABLE test_table
          VALUES (1, 'Alice', 5000.50, '2022-01-15', ARRAY(80, 90, 95), MAP('age', '30', 'city', 'New York')),
          (2, 'Bob', 6000.75, '2021-11-23', ARRAY(70, 85), MAP('age', '28', 'city', 'Los Angeles')),
          (3, 'Charlie', 7000.00, '2023-03-10', ARRAY(95, 85, 92), MAP('age', '35', 'city', 'Chicago')),
          (4, 'David', NULL, '2023-06-01', ARRAY(88, 76), MAP('age', '27', 'city', 'Houston')),
          (5, 'Eva', 8000.00, '2020-09-05', ARRAY(95, 100), MAP('age', '32', 'city', 'Seattle'));

          再执行综合查询:

          SELECT id,
          name,
          salary,
          join_date,
          DATE_ADD(join_date, 30) AS join_date_plus_30_days, -- 日期加上30天
          DATE_SUB(join_date, 15) AS join_date_minus_15_days, -- 日期减去15天
          UNIX_TIMESTAMP(join_date) AS join_unix_timestamp, -- 入职日期的Unix时间戳
          FROM_UNIXTIME(UNIX_TIMESTAMP(join_date)) AS join_date_readable, -- Unix时间戳转为可读格式
          CONCAT(name, ' has a salary of $', CAST(salary AS STRING)) AS salary_info, -- 连接字符串
          LENGTH(name) AS name_length, -- 获取姓名长度
          TRIM(name) AS trimmed_name, -- 去掉姓名的空格
          INSTR(name, 'a') AS position_of_a, -- 查找字母 'a' 在姓名中的位置
          COUNT(*) OVER () AS total_employees, -- 计算总员工数
          AVG(salary) OVER () AS average_salary, -- 计算平均薪资
          SIZE(scores) AS score_count, -- 计算绩效评分的数量
          MAP_KEYS(attributes) AS attribute_keys, -- 获取属性映射的所有键
          MAP_VALUES(attributes) AS attribute_values, -- 获取属性映射的所有值
          CASE
          WHEN salary IS NULL THEN 'Salary not provided'
          ELSE 'Salary available'
          END AS salary_status, -- 判断薪资是否提供
          ROUND(salary, 0) AS rounded_salary, -- 四舍五入薪资
          CEIL(salary) AS ceil_salary -- 向上取整薪资
          FROM test_table;

          删除库表

          删除数据库的语法如下:

          DROP DATABASE [IF EXISTS] database_name [RESTRICT | CASCADE];

          参数说明如下:

          1、IF EXISTS:添加该参数会校验数据库是否存在,如果数据库不存在则不执行任何操作;

          2、CASCADE:如果指定该参数,删除数据库的同时会删除数据库中所有的表;

          3、RESTRICT:删除数据库的默认行为,如果数据库不为空,删除操作将会抛出异常。

          Hive 删除表的语法如下:

          DROP TABLE [IF EXISTS] table_name [PURGE];

          1、IF EXISTS:添加该参数会校验表是否存在,如果表不存在则不执行任何操作;

          2、PURGE:删除表的默认行为是将数据移动到 .Trash/Current,如果指定该参数则会直接删除数据。

          一个简单示例如下:

          -- 1. 使用创建好的测试数据库 test_drop 创建测试表, 如果数据库不存在则执行 create database test_drop;

          CREATE TABLE test_drop.test_drop_table
          (
              id INT,
              val STRING
          ) STORED AS ORC;

          -- 2. 插入数据

          INSERT INTO test_drop.test_drop_table (id, val)
          VALUES (1, 'a'),
          (2, 'b');

          -- 3. 尝试删除数据库

          -- 抛出异常,Error while processing statement: FAILED: Execution Error, return code 1
          -- from org.apache.hadoop.hive.ql.exec.DDLTask. InvalidOperationException(message:Database test_drop is not empty.
          DROP DATABASE test_drop RESTRICT;

          -- 4. 删除表

          DROP TABLE test_drop.test_drop_table;

          -- 5. 再次删除数据库,成功删除

          DROP DATABASE test_drop RESTRICT;

          -- 6. 重新执行步骤1~步骤2;使用 CASCADE 选项删除数据库,可以成功删除数据库

          DROP DATABASE test_drop CASCADE;

          其他重要语句

          -- 显示所有数据库名称

          show databases;

          -- 显示所有表名称

          show tables;

          -- 显示数据库详细信息

          desc database extended <database_name>;

          -- 切换数据库

          use <database_name>;
          文档反馈

          建议您登录后反馈,可在建议与反馈里查看问题处理进度

          鼠标选中文档,精准反馈问题

          选中存在疑惑的内容,即可快速反馈问题,我们会跟进处理

          知道了

          上一篇 :  Hive客户端使用
          下一篇 :  Hive典型应用示例
          搜索 关闭
          ©2026 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
          公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
          备案 京公网安备11010802043424号 京ICP备 2021034386号
          ©2026天翼云科技有限公司版权所有
          京ICP备 2021034386号
          备案 京公网安备11010802043424号
          增值电信业务经营许可证A2.B1.B2-20090001
          用户协议 隐私政策 法律声明