hive学习(二)

本文详细介绍了Hive的基本知识,包括Hive Shell、HQL数据类型(基本数据类型和复杂数据类型)、表类别(内部表和外部表)以及基本的数据库操作如创建、查看、删除数据库和创建表等。内容涵盖了数据类型的使用、表的创建和管理,并强调了内部表和外部表在删除时的区别。

hive基本知识

hive shell

执行hive进入hive shell

hive shell基本设置

#set xxx当进行赋值是则进行属性设置,无赋值是为查看属性当前值
#设置展示表数据时展示字段名
hive> set hive.cli.print.header=true;
hive> set hive.cli.print.header;     
hive.cli.print.header=true
#设置展示当前所在数据库
hive> set hive.cli.print.current.db=true;
hive (default)> 

HQL数据类型

基本数据类型:

TINYINT 1byte
SMALLINT 2byte
INT 4byte
BIGINT 8byte
FLOAT 4byte
DOUBLE 8byte
BOOLEAN
STRING 2G

复杂数据类型:

ARRAY 有序数组
MAP 无序键值对,key必须是基础数据类型
STRUCT 一组字段

explain:获取HQL的执行计划

表类别

内部表:
托管表
由hive进行管理,删除hive表的时候删除数据
外部表:
数据不是由hive进行管理,当删除hive表的时候hive并不删除数据

基本命令

创建数据库

CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] DB_NAME
[COMMENT DATABASE_COMMENT]
[LOCATION HDFS_PATH]
[WITH DBPROPERTIES
(property_name=value, name=value)]

hive> create database if not exists hive_test comment "this is the hive test database";
OK
Time taken: 4.527 seconds

查看数据库描述

DESCRIBE (EXTENDED–是否显示额外信息) (DATABASE|SCHEMA)

hive (default)> describe database hive_test;
OK
db_name comment location    owner_name  owner_type  parameters
hive_test   this is the hive test database  hdfs://dev-hadoop-single.com:8020/user/hive/warehouse/hive_test.db  hadoop  USER    
Time taken: 0.073 seconds, Fetched: 1 row(s)
-------------------------------------------------------

删除数据库

DROP (DATABASE|SCHEMA) [IF EXISTS] [RESTRICT(有table拒绝删除)|CASCADE(级联删除)]

hive (hive_test)> drop database hive_test;
OK
Time taken: 0.62 seconds
hive (hive_test)> show databases;
OK
database_name
default
log_analysis
mydb
Time taken: 0.033 seconds, Fetched: 3 row(s)
-------------------------------------------------------

使用某个库

USER (DATABASE|SCHEMA)

hive (default)> use hive_test;
OK
Time taken: 0.024 seconds
hive (hive_test)> 

创建表:

1.create table
2.create table … as select(会产生数据)
3.create table tablename like exist_tablename类似于拷贝表结构但是并不拷贝数据

CREATE [EXTERNAL(外部表)] TABLE [IF NOT EXISTS]
[db_name.]table_name
(col1_name col1_type [COMMENT col1_comment],…)
[COMMENT table_comment]
[PARTITIONED BY (col_name col_type)]——分区信息
[CLUSTERED BY (col_name col_type)[SORTED BY(col_name [ASC|DESC],..)] INTO num_buckets BUCKETS] —表的桶信息
[ROW FORMAT row_format] —表的数据分割信息,格式化信息
[STORED AS file_format] —表的数据存储序列化信息
[LOCATION hdfs_path]; —数据存储的文件地址信息

ROW FORMAT:
row_format : delimited fields terminated by ‘\001’ collection terminated by ‘\002’ map keys terminated by ‘\003’ lines terminated by ‘\004’ NULL DEFINED AS ‘\N’

STORED AS:
file_format : sequencefile, textfile(default), rcfile, orc,avro…

CREATE [EXTERNAL] TABLE [IF NOT EXISTS]
[db_name.]table_name
LIKE existing_table_or_view_name
[LOCATION hdfs_path];

hive> create table test_manager(id int);
hive> create external table test_external(id int);
hive> create table test_location(id int) location ‘/test_location’;
删除hive表时内部表数据会被删除,外部表一定不会被删除

create table customers(id int, name string, phone string) row format delimited fields terminated by ',' location '/user/hadoop/data'
create table customers2 like customers;
create table customers3 as select * from customers;

=====================>
复杂数据类型

create table complex_table_text(id int, name string, flag boolean, score array<int>, tech map<string, string>, other struct<phone:string, email:string>) row format delimited fields terminated by '\;' collection items terminated by ',' map keys terminated by ':' location '/user/hadoop/data1/';
内容概要:本文介绍了ENVI Deep Learning V1.0的操作教程,重点讲解了如何利用ENVI软件进行深度学习模型的训练与应用,以实现遥感图像中特定目标(如集装箱)的自动提取。教程涵盖了从数据准备、标签图像创建、模型初始化与训练,到执行分类及结果优化的完整流程,并介绍了精度评价与通过ENVI Modeler实现一键化建模的方法。系统基于TensorFlow框架,采用ENVINet5(U-Net变体)架构,支持通过点、线、面ROI或分类图生成标签数据,适用于多/高光谱影像的单一类别特征提取。; 适合人群:具备遥感图像处理基础,熟悉ENVI软件操作,从事地理信息、测绘、环境监测等相关领域的技术人员或研究人员,尤其是希望将深度学习技术应用于遥感目标识别的初学者与实践者。; 使用场景及目标:①在遥感影像中自动识别和提取特定地物目标(如车辆、建筑、道路、集装箱等);②掌握ENVI环境下深度学习模型的训练流程与关键参数设置(如Patch Size、Epochs、Class Weight等);③通过模型调优与结果反馈提升分类精度,实现高效自动化信息提取。; 阅读建议:建议结合实际遥感项目边学边练,重点关注标签数据制作、模型参数配置与结果后处理环节,充分利用ENVI Modeler进行自动化建模与参数优化,同时注意软硬件环境(特别是NVIDIA GPU)的配置要求以保障训练效率。
内容概要:本文系统阐述了企业新闻发稿在生成式引擎优化(GEO)时代下的全渠道策略与效果评估体系,涵盖当前企业传播面临的预算、资源、内容与效果评估四大挑战,并深入分析2025年新闻发稿行业五大趋势,包括AI驱动的智能化转型、精准化传播、首发内容价值提升、内容资产化及数据可视化。文章重点解析央媒、地方官媒、综合门户和自媒体四类媒体资源的特性、传播优势与发稿策略,提出基于内容适配性、时间节奏、话题设计的策略制定方法,并构建涵盖品牌价值、销售转化与GEO优化的多维评估框架。此外,结合“传声港”工具实操指南,提供AI智能投放、效果监测、自媒体管理与舆情应对的全流程解决方案,并针对科技、消费、B2B、区域品牌四大行业推出定制化发稿方案。; 适合人群:企业市场/公关负责人、品牌传播管理者、数字营销从业者及中小企业决策者,具备一定媒体传播经验并希望提升发稿效率与ROI的专业人士。; 使用场景及目标:①制定科学的新闻发稿策略,实现从“流量思维”向“价值思维”转型;②构建央媒定调、门户扩散、自媒体互动的立体化传播矩阵;③利用AI工具实现精准投放与GEO优化,提升品牌在AI搜索中的权威性与可见性;④通过数据驱动评估体系量化品牌影响力与销售转化效果。; 阅读建议:建议结合文中提供的实操清单、案例分析与工具指南进行系统学习,重点关注媒体适配性策略与GEO评估指标,在实际发稿中分阶段试点“AI+全渠道”组合策略,并定期复盘优化,以实现品牌传播的长期复利效应。
<think>嗯,用户想学习HiveSQL的使用和语法,还明确提到需要教程和入门指南。从历史记录看,用户已经了解过索引等数据库概念,但对Hive这个特定工具可能还是新手。用户给出的引用内容其实已经提供了很好的学习线索:引用2和3都提到了Hive的核心特点和基础语法,比如严格别名要求、与标准SQL的差异(子查询要用IN代替等)、以及它基于MapReduce的离线特性。用户应该需要系统性的学习路径。考虑到Hive的实际应用场景,教程设计需要突出三点:一是与普通SQL的差异点(比如分区表、严格模式),是性能优化技巧(如分区裁剪),三是避免初学者踩坑(如忘记开启动态分区)。用户可能正在准备大数据方向的面试或实际项目,所以案例需要接近真实场景。上次回答数据库索引时用了数学公式解释B+树,这次在MapReduce原理部分也可以用类似方式说明数据分片计算,比如reduce阶段的数据分发公式$\text{reduce}_k=\bigcup_{m}\text{map}_m(k)$,但不宜过多以免分散注意力。需要特别提醒的是,根据引用3,Hive元数据存储在MySQL这类关系库,但数据本身在HDFS——这个架构特性决定了它的使用限制。很多初学者会在这里混淆,应该在“数据存储特点”部分强调。</think> 以下是一份全面且实用的Hive SQL学习指南,结合核心概念与高频实践场景,助你快速掌握: --- ### **一、Hive基础架构与特点** | **特点** | **说明** | |------------------|--------------------------------------------------------------------------| | **类SQL语法** | 支持标准SQL语法(如`SELECT`/`JOIN`/`GROUP BY`),学习成本低[^3] | | **存储与计算分离** | 数据存于HDFS,元数据存于MySQL等关系库[^3] | | **批处理导向** | 适用于PB级离线数据处理(实时计算需用Spark/Flink)[^3] | --- ### **、核心语法精讲(附避坑指南)** #### 1. **数据查询** ```sql -- 基础查询(支持WHERE过滤) SELECT user_id, SUM(order_amount) FROM orders WHERE dt='20230615' -- 分区过滤加速查询 GROUP BY user_id HAVING SUM(order_amount) > 1000; -- 分组后过滤[^4] ``` #### 2. **子查询规范** ```sql -- ✅ 正确:使用IN代替= (Hive对等式子查询严格) SELECT * FROM users WHERE user_id IN ( SELECT user_id FROM vip_users ); -- ❌ 错误:直接使用= (报错) SELECT * FROM users WHERE user_id = (SELECT user_id FROM vip_users); [^2] ``` #### 3. **排序操作** ```sql -- 全局排序(Order By:需避免大表全排序) SELECT * FROM logs ORDER BY event_time DESC; -- 局部排序(Sort By:每个Reduce内排序) SELECT * FROM logs SORT BY event_time; ``` --- ### **三、高级特性实践** #### 1. **分区表优化** ```sql -- 建表时定义分区 CREATE TABLE logs ( ip STRING, url STRING ) PARTITIONED BY (dt STRING); -- 按日期分区 -- 查询时利用分区裁剪 SELECT * FROM logs WHERE dt BETWEEN '20230101' AND '20230107'; [^3] ``` #### 2. **动态分区写入** ```sql -- 开启动态分区 SET hive.exec.dynamic.partition=true; SET hive.exec.dynamic.partition.mode=nonstrict; INSERT INTO TABLE logs PARTITION(dt) SELECT ip, url, dt FROM raw_logs; -- 自动按dt列值分区 ``` #### 3. **复杂数据类型操作** ```sql -- Map类型处理 SELECT user_id, preferences['language'] AS lang -- 获取Map中的值 FROM user_profiles; -- Array类型展开 SELECT user_id, skill FROM employees LATERAL VIEW EXPLODE(skills_array) t AS skill; [^3] ``` --- ### **四、性能调优关键点** 1. **数据倾斜处理** - **场景**:GROUP BY时某key数据量过大 - **方案**: ```sql SET hive.groupby.skewindata=true; -- 启用倾斜优化 ``` 2. **MapReduce优化** ```sql -- 控制Reduce数量 SET mapred.reduce.tasks=20; ``` 3. **存储格式选择** - ORC/Parquet格式 > TextFile(压缩+列式存储) --- ### **五、免费学习资源** 1. **官方文档**: [Apache Hive官方手册](https://hive.apache.org/) 2. **在线沙箱**: Hadoop生态试验场(需注册)提供完整Hive环境 3. **本地部署**: 使用Docker快速搭建Hive环境(教程见[^2]附录) > ⚠️ 注意:Hive执行引擎差异(Tez/Spark vs MR)可能导致语法细节不同,需确认环境配置 --- **
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值