Hive实战:词频统计

文章目录

  • 一、实战概述
  • 二、提出任务
  • 三、完成任务
    • (一)准备数据文件
      • 1、在虚拟机上创建文本文件
      • 2、将文本文件上传到HDFS指定目录
    • (二)实现步骤
      • 1、启动Hive Metastore服务
      • 2、启动Hive客户端
      • 3、基于HDFS文件创建外部表
      • 4、利用Hive SQL进行词频统计
      • 5、演示分步完成词频统计

一、实战概述

  • 在本次实战中,我们任务是在大数据环境下使用Hive进行词频统计。首先,我们在master虚拟机上创建了一个名为test.txt的文本文件,内容包含一些关键词的句子。接着,我们将该文本文件上传到HDFS的/hivewc/input目录,作为数据源。

  • 随后,我们启动了Hive Metastore服务和Hive客户端,为数据处理做准备。在Hive客户端中,我们创建了一个名为t_word的外部表,该表的结构包含一个字符串类型的word字段,并将其位置设置为HDFS中的/hivewc/input目录。这样,Hive就可以直接读取和处理HDFS中的文本数据。

  • 为了进行词频统计,我们编写了一条Hive SQL语句。该语句首先使用explodesplit函数将每个句子拆分为单个单词,然后通过子查询对这些单词进行计数,并按单词进行分组,最终得到每个单词的出现次数。

  • 通过执行这条SQL语句,我们成功地完成了词频统计任务,得到了预期的结果。这个过程展示了Hive在大数据处理中的强大能力,尤其是对于文本数据的分析和处理。同时,我们也注意到了在使用Hive时的一些细节,如子查询需要取别名等,这些经验将对今后的数据处理工作有所帮助。

二、提出任务

  • 文本文件test.txt
hello hadoop hello hive
hello hbase hello spark
we will learn hadoop
we will learn hive
we love hadoop spark
  • 进行词频统计,结果如下
hadoop  3
hbase   1
hello   4
hive    2
learn   2 
love    1
spark   2
we      3
will    2

三、完成任务

(一)准备数据文件

1、在虚拟机上创建文本文件

  • 在master虚拟机上创建test.txt文件
    在这里插入图片描述

2、将文本文件上传到HDFS指定目录

  • 在HDFS上创建/hivewc/input目录
    在这里插入图片描述
  • test.txt文件上传到HDFS的/hivewc/input目录
    在这里插入图片描述

(二)实现步骤

1、启动Hive Metastore服务

  • 执行命令:hive --service metastore &,在后台启动metastore服务
    在这里插入图片描述

2、启动Hive客户端

  • 执行命令:hive,看到命令提示符hive>
    在这里插入图片描述

3、基于HDFS文件创建外部表

  • 基于/hivewc/input目录下的文件,创建外部表t_word,执行命令: create external table t_word(word string) location '/hivewc/input';
    在这里插入图片描述

  • 在MySQL的hive数据库的TBLS表里可以查看外部表t_word对应的记录
    在这里插入图片描述

  • 要删除外部表,使用truncate table <外部表名>

4、利用Hive SQL进行词频统计

  • 编写Hive SQL语句,进行词频统计
  • 执行命令:select word, count(*) from (select explode(split(word, ' ')) word from t_word) t_word_1 group by word;
  • 注意:子查询(select explode(split(word,' ')) word from t_word)必须取别名(比如t_word_1),否则会报错。
    在这里插入图片描述
  • 这个Hive SQL语句的主要功能是对文本数据中的单词进行词频统计,即计算每个单词在文本中出现的次数。
  1. select word, count(*) from: 这部分是SQL的基本结构,表示我们要选择word字段和每个word字段值的计数。

  2. (select explode(split(word, ' ')) word from t_word) t_word_1: 这是一个子查询。

    • explode(split(word, ' ')): split(word, ' ')函数会根据空格将每一行的word字段值分割成一个数组。explode函数则会将这个数组扩展为多行,每行包含数组中的一个元素。这样,原来的一行文本就变成了多行,每行只包含一个单词。
    • t_word_1是给这个子查询结果取的别名,这是Hive的要求,对于嵌套查询的结果需要指定别名。
  3. group by word: 这部分指示Hive对查询结果进行分组,具体来说,是按照word字段的值进行分组。在分组之后,对于每个唯一的word值,Hive都会计算其出现的次数(通过count(*))。

  • 综上所述,这个Hive SQL语句的作用是:首先,使用explodesplit函数将原始文本数据中的句子拆分为单个单词;然后,通过子查询将这些单词作为新的行进行处理;最后,按照单词进行分组并计算每个单词的出现次数。执行该语句后,结果将显示每个单词及其在文本中出现的次数。

5、演示分步完成词频统计

  • 创建v_word视图,执行命令:CREATE VIEW v_word AS SELECT explode(split(word, ' ')) AS word FROM t_word;
    在这里插入图片描述
  • 查看v_word视图的记录,执行命令:SELECT * FROM v_word;
    在这里插入图片描述
  • v_word视图按word字段分组统计个数,执行命令:SELECT word, count(*) FROM v_word GROUP BY word;
    在这里插入图片描述

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

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

相关文章

物联网协议Coap之Californium CoapServer解析

目录 前言 一、CoapServer对象 1、类对象定义 2、ServerInterface接口 3、CoapServer对象 二、CoapServer服务运行分析 1、CoapServer对象实例化 1.1 调用构造方法 1.2 生成全局配置 1.3 创建Resource对象 1.4-1.8、配置消息传递器、添加CoapResource 1.9-1.12 创建线…

Dash中 基本的 callback 5

app.callback 在Dash中&#xff0c;app.callback 被用于创建交互性应用程序&#xff0c;它用于定义一个回调函数&#xff0c;该函数在应用程序中发生特定事件时被触发。回调函数可以修改应用程序的布局或更新图表等内容&#xff0c;从而实现动态交互。 下面是一个简单的 app.…

65内网安全-域环境工作组局域网探针

这篇分为三个部分&#xff0c;基本认知&#xff0c;信息收集&#xff0c;后续探针&#xff0c; 基本认知 分为&#xff0c;名词&#xff0c;域&#xff0c;认知&#xff1b; 完整架构图 名词 dwz称之为军事区&#xff0c;两个防火墙之间的区域称之为dwz&#xff0c;但安全性…

视频批量处理:随机分割方法,创新剪辑方式

随着数字媒体技术的飞速发展&#xff0c;视频处理已是日常生活和工作中不可或缺的一部分。在处理大量视频时&#xff0c;要一种高效、自动化的方法来满足需求。现在一起来看云炫AI智剪如何批量随机分割视频的批量处理方法&#xff0c;给视频剪辑工作带来创新。 视频随机分割4段…

SAP PP 配置学习(三)

Classification 分类 关联特征值 – (省市联动) 关联特征显示 一个特征是否输入&#xff0c;根据另一个特征来判断。如&#xff1a;只有输入了省份&#xff0c;才需要输入城市。没输省份前&#xff0c;城 市这个特征是不可见的。 修改【城市】特征. 在【城市】特征值中&#xf…

禁止浏览器记住密码和自动填充 element-ui+vue

vue 根据element-ui 自定义密码输入框&#xff0c;防止浏览器 记住密码和自动填充 <template><divclass"el-password el-input":class"[size ? el-input-- size : , { is-disabled: disabled }]"><inputclass"el-input__inner"…

【Unity6.0+AI】Unity版的Pytorch之Sentis-把大模型植入Unity

本教程详细讲解什么Sentis。以及恶补一些人工智能神经网络的基础概念,概述了基本流程,加载模型、输入内容到模型、使用GPU让模型推理数据、输出数据。 官方文档 Unity Sentis: Use AI models in Unity Runtime | Unity 主页介绍 官方文档链接:Sentis overview | Sentis | 1…

vue3+ts 可视化大屏无限滚动table效果实现

注意&#xff1a;vue3版本需使用 vue3-seamless-scroll npm npm install vue3-seamless-scroll --save页面引入 TS import { Vue3SeamlessScroll } from "vue3-seamless-scroll";代码使用&#xff08;相关参数可参考&#xff1a;https://www.npmjs.com/package/vu…

Spark RDD的行动操作与延迟计算

Apache Spark是一个强大的分布式计算框架&#xff0c;用于大规模数据处理。在Spark中&#xff0c;RDD&#xff08;弹性分布式数据集&#xff09;是核心概念之一&#xff0c;而RDD的行动操作和延迟计算是Spark的关键特性之一。本文将深入探讨什么是Spark RDD的行动操作以及延迟计…

Unity中Shader裁剪空间推导(正交相机到裁剪空间的转化矩阵)

文章目录 前言一、正交相机视图空间 转化到 裁剪空间 干了什么1、正交相机裁剪的范围主要是这个方盒子2、裁剪了之后&#xff0c;需要把裁剪范围内的坐标值化到[-1,1]之间&#xff0c;这就是我们的裁剪空间。3、在Unity中&#xff0c;设置相机为正交相机4、在这里设置相机的近裁…

[足式机器人]Part2 Dr. CAN学习笔记-Ch00 - 数学知识基础

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-Ch00 - 数学知识基础 1. Ch0-1矩阵的导数运算1.1标量向量方程对向量求导&#xff0c;分母布局&#xff0c;分子布局1.1.1 标量方程对向量的导数1.1.2 向量方程对向量的导数 1.2 案例分析&#xf…

Chrome插件精选 — 前端工具

Chrome实现同一功能的插件往往有多款产品&#xff0c;逐一去安装试用耗时又费力&#xff0c;在此为某一类型插件挑选出比较好用的一款或几款&#xff0c;尽量满足界面精致、功能齐全、设置选项丰富的使用要求&#xff0c;便于节省一个个去尝试的时间和精力。 1. FeHelper(前端助…

【网络协议】远程登录安全连接协议SSH(Secure Shell)

文章目录 什么是SSH协议&#xff1f;SSH为何是安全的&#xff1f;SSH由哪些组件构成&#xff1f;SSH可以帮助实现的功能SSH的工作原理SSH的历史版本常用的SSH工具有哪些SSH配置案例参考Windows 安装SSHUbuntu系统SSH配置Cisco Switch SSH配置华为Switch SSH配置 客户端启用SSH连…

WPF 消息日志打印帮助类:HandyControl+NLog+彩色控制台打印

文章目录 前言相关文章Nlog配置HandyControl配置简单使用显示效果文本内容 前言 我将简单的HandyControl的消息打印系统和Nlog搭配使用&#xff0c;简化我们的代码书写 相关文章 .NET 控制台NLog 使用 WPF-UI HandyControl 控件简单实战 C#更改控制台文字输出颜色 Nlog配置 …

vue中 ref 和 reactive 的区别与联系

官方原文&#xff1a;Vue3 建议使用 ref() 作为声明响应式状态的主要API。 ref 用于将基本类型的数据&#xff08;如字符串、数字&#xff0c;布尔值等&#xff09;和引用数据类型(对象) 转换为响应式数据。使用 ref 定义的数据可以通过 .value 属性访问和修改。reactive 用于…

什么是数据可视化?数据可视化的流程与步骤

前言 数据可视化将大大小小的数据集转化为更容易被人脑理解和处理的视觉效果。可视化在我们的日常生活中非常普遍&#xff0c;但它们通常以众所周知的图表和图形的形式出现。正确的数据可视化以有意义和直观的方式为复杂的数据集提供关键的见解。 数据可视化定义 数据可视化…

PYTHON基础:最小二乘法

最小二乘法的拟合 最小二乘法是一种常用的统计学方法&#xff0c;用于通过在数据点中找到一条直线或曲线&#xff0c;使得这条直线或曲线与所有数据点的距离平方和最小化。在线性回归中&#xff0c;最小二乘法被广泛应用于拟合一条直线与数据点之间的关系。 对于线性回归&…

从企业级负载均衡到云原生,深入解读F5

上世纪九十年代&#xff0c;Internet快速发展催生了大量在线网站&#xff0c;Web访问量迅速提升。在互联网泡沫破灭前&#xff0c;这个领域基本是围绕如何对Web网站进行负载均衡与优化。从1997年F5发布了BIG-IP&#xff0c;到快速地形成完整ADC产品线&#xff0c;企业级负载均衡…

51单片机(STC8)-- 串口配置及串口重定向(printf)

文章目录 STC8串口概述串口寄存器配置串口1控制寄存器SCON串口1数据寄存器SBUF串口1模式 1工作方式串口1波特率计算方式 串口注意事项串口1通信demo串口重定向 STC8串口概述 由下图可知STC8H3K64S4带有4个4个串行通信接口&#xff0c;芯片名后两位S所带的数字即代表这款芯片带…

echarts自定义鼠标移上去显示,自定义图例,自定义x轴显示

提示&#xff1a;记录一下echarts常用配置,以免后期忘记 1.自定义鼠标移上去效果 tooltip: { show: true, trigger: "axis", axisPointer: { type: "shadow",//默认自定义效果 }, // //自定义鼠标移上去效果 formatter: (v) > { console.log("打印…