Hive构建日搜索引擎日志数据分析系统

news/2024/11/30 4:59:54/

1.数据预处理

根据自己或者学校系统预制的数据

使用less sogou.txt可查看

wc -l sogou.txt 能够查看总行数

2.数据扩展部分

我的数据位置存放在 /data/bigfiles

点击q退出

将一个文件的内容传递到另一个目录文件下

原数据在 /data/bigfiles  ->传递 到/data/workspace

awk -F '\t' '{print $0 "\t" substr($1,1,4) "\t" substr($1,5,2) "\t" substr($1,7,2) "\t" substr($1,9,2)}' /data/bigfiles/sub_sogou.txt>/data/workspace/sub_sogou-ext.txt

继续使用less命令可以查看数据扩展结果

3.数据加载

将数据加载到HDFS

hdfs dfs -mkdir -p /sogou/20111230

hdfs dfs -put /data/workspace/sub_sogou.txt /sogou/20111230

hdfs dfs -mkdir -p /sogou_ext/20111230

hdfs dfs -put /data/workspace/sub_sogou.txt /sogou_ext/20111230

 基于Hive构建日志数据的数据仓库

要记得启动hive

接下来的操作均在hive客户端完成

1.基本操作

查看数据库的命令:show databases;

创建数据库sogou:create database if not exists sogou;

接下来使用数据库:use sogoul

查看表名:show tables;

创建外部表sogou_22106128用于加载sogou.txt的数据

CREATE EXTERNAL TABLE sogou.sogou_22106128 (ts STRING,uid STRING,keyword STRING,rank INT,order_num INT, url STRING
)
COMMENT 'This is the sogou search data of one day'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE
LOCATION '/sogou/22106128';

 desc sogou_22106128可查看相关字段和类型

2.创建分区(按照年、月、日、小时)

创建四个字段数据的外部表

CREATE EXTERNAL TABLE sogou.sogou_ext_22106128 (ts STRING,uid STRING,keyword STRING,rank INT,order1 INT, url STRING,year INT,month INT,day INT,hour INT
)
COMMENT 'this is the sogou search data of extend'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t' 
STORED AS TEXTFILE
LOCATION '/sogou_ext/22106128'; 

 创建好后创建分区表:

CREATE EXTERNAL TABLE sogou.sogou_partition (ts STRING,uid STRING,keyword STRING,rank INT,order1 INT, url STRING
)
PARTITIONED BY (year INT, month INT, day INT, hour INT)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'  
STORED AS TEXTFILE
LOCATION '/path/to/sogou_partition'; 

 最后向分区表sogou_partition中载入数据:

set hive.exec.dynamic.partition.mode=nonstrict; //开启动态分区模式为非严格的

这部分参考的老师的代码:

 


http://www.ppmy.cn/news/1551106.html

相关文章

为什么PHP爬虫抓取失败?解析cURL常见错误原因

豆瓣电影评分作为中国电影市场的重要参考指标,凭借其广泛覆盖的观众反馈和真实评分,成为电影市场推广和策略优化的核心依据之一。通过精准获取这些评分数据,电影制作方和发行方可以更好地理解观众需求,优化宣传策略,并…

Jenkins-基于 SSH 实现 Jenkins 分布式

工作原理 主节点与从节点通信: 主节点通过 SSH 登录到从节点,并启动 Jenkins Agent 程序(Agent.jar)Agent 程序通过主节点指定的端口(默认为 50000)与主节点保持通信 任务分发: 主节点根据任务配…

GaussianDreamer: Fast Generation from Text to 3D Gaussians——点云论文阅读(11)

此内容是论文总结,重点看思路!! 文章概述 本文提出了一种快速从文本生成3D资产的新方法,通过结合3D高斯点表示、3D扩散模型和2D扩散模型的优势,实现了高效生成。该方法利用3D扩散模型生成初始几何,通过噪声…

spring +fastjson 的 rce

前言 众所周知&#xff0c;spring 下是不可以上传 jsp 的木马来 rce 的&#xff0c;一般都是控制加载 class 或者 jar 包来 rce 的&#xff0c;我们的 fastjson 的高版本正好可以完成这些&#xff0c;这里来简单分析一手 环境搭建 <dependency><groupId>org.spr…

laravel中队列使用

Laravel 提供了强大的队列系统&#xff0c;允许开发者将耗时任务推送到后台执行&#xff0c;从而提升系统性能和用户体验。本文将从基本使用到深入解析&#xff0c;结合单进程队列的特点&#xff0c;完整地介绍 Laravel 队列的使用。 队列的作用和场景* 在 Web 开发中&#x…

C#里怎么样使用LINQ的let关键字实现查询?

C#里怎么样使用LINQ的let关键字实现查询? 在C#中,let关键字是用来在查询表达式中声明一个范围变量的。范围变量是在迭代过程中保存查询产生的序列中的元素的临时变量。 以下是一个使用let关键字的示例代码: /** C# Program to Implement Let Condition using LINQ*/ usi…

ubuntu客户端使用飞牛云的smb服务端共享,和ftp记录

ubuntu smb客服端链接 在Ubuntu上设置SMB客户端连接到SMB服务器&#xff0c;你可以使用smbclient工具或者挂载共享目录。以下是使用smbclient和挂载的简单示例&#xff1a; 使用smbclient连接SMB服务器 安装smbclient&#xff1a; sudo apt-update sudo apt-get install smbcli…

Vue Promise的使用,界面使用异步线程循环执行方法(模拟线程)

目录 1.定义开始和退出标识 2.定义开始方法--异步 3.定义循环方法&#xff0c;以及控制规则 4.定义业务方法 1.定义开始和退出标识 为的是能控制开始和结束&#xff0c;记得销毁时要结束循环&#xff0c;否则方法会一直被执行 data() {return {isrunning: false, // 轮询…