什么是Hive(新手易懂版)

发布时间:2026/7/24 20:30:14
什么是Hive(新手易懂版) 一、什么是Hive1. 问题思考我们已经把 alert_orcl.log 上传到了 HDFS 的 /input 目录。MapReducewordcount需要写 Java 代码或者执行 jar 包只能一次性运行。Hive只写 SQL 语句不用编写代码直接读取 HDFS 上已有的文件筛选出以字母a开头的单词并统计数量这就是 Hive 把 MapReduce 封装成 SQL 的优势。2. 实现步骤步骤 1打开 Hive 客户端hive步骤 2创建外部表直接关联 HDFS 已有的数据文件不用再次上传文件直接映射 /input 目录-- 创建外部表每行文本作为一整条记录 CREATE EXTERNAL TABLE log_words ( line STRING ) ROW FORMAT DELIMITED STORED AS TEXTFILE LOCATION /input;步骤 3拆分每行文本为独立单词利用 Hive 内置函数把一行里所有单词拆开变成多行单个单词SELECT explode(split(line, )) AS word FROM log_words;步骤 4筛选 a 开头的单词并且统计总数-- 统计所有以小写字母a开头的单词数量 SELECT COUNT(DISTINCT word) FROM ( SELECT explode(split(line, )) AS word FROM log_words ) t WHERE word LIKE a%;3. 引出 HiveHadoop 世界的 SQL 翻译官Hive 就是让你用写 SQL 的方式去分析 HDFS 上的大数据的工具。这行SQL你敲进去回车Hive 会自动帮你翻译成一堆 MapReduce 任务扔到 Hadoop 集群上去跑最后把结果返回给你。你不用懂 MapReduce 怎么写会 SQL 就行 —— 这就是 Hive 的价值。二、为什么要先装 MySQLHive 本身不存数据真实数据 → 存在 HDFS 上以文件的形式分布式存储数据的说明书 → 存在 MySQL 上专业名叫 Metastore元数据元数据包括什么举例子有一张叫 XXX 的表表里有几个字段每个字段是什么类型字符串 / 数字这张表的数据文件存在 HDFS 的哪个目录下没有 MySQL 会怎样 Hive 就不知道自己有哪些表、数据存在哪。三、Hive 简单验证做验证之前先想三个问题我在 Hive 里 create table test真实数据存哪了MySQL 里会多出什么为什么会多出东西HDFS 上会有变化吗变化的是什么HDFS /input/alert_orcl.log、Hive 映射外部表 log_words。前置我们创建的外部表语句CREATE EXTERNAL TABLE log_words (line STRING) ROW FORMAT DELIMITED STORED AS TEXTFILE LOCATION /input;LOCATION 直接绑定 HDFS 原文件路径是核心关键点。步骤 1查看 Hive 默认仓库目录找不到表数据文件# 1. 查看Hive默认存储仓库路径hdfs dfs -ls /user/hive/warehouse输出列表里没有 log_words 文件夹没有任何和 alert_orcl.log 相关的数据文件。步骤 2查看真实数据仍然躺在原始 HDFS 路径hdfs dfs -ls /input hdfs dfs -cat /input/alert_orcl.log一张图总结三者关系一句话总结Hive 不生产数据它只是数据的 翻译官 和 管理员—— 说明书存在 MySQL货物存在 HDFSHive 负责对接两头。