当前位置: 首页 > article >正文

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

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.kler.cn/a/415019.html

相关文章:

  • docker 僵尸进程问题
  • 设置ip和代理DNS的WindowsBat脚本怎么写?
  • vue3 ajax获取json数组排序举例
  • Spring Boot英语知识网站:架构与开发
  • HTML DOM 修改 HTML 内容
  • 扫雷-完整源码(C语言实现)
  • 将excel文件中的信息读取后批量生成word文件
  • 鸿蒙ArkUI-X已更新适配API13啦
  • ubuntu中使用ffmpeg和nginx推http hls视频流
  • 网站怎么防御https攻击
  • 基于java web的网上书店系统设计
  • 云原生革命:构建未来应用的无限可能
  • Android 性能优化:内存优化(理论篇)
  • 解析大带宽服务器:推动高流量时代的关键力量
  • ASP.NET Core Web API 控制器
  • 11、PyTorch中如何进行向量微分、矩阵微分与计算雅克比行列式
  • MySQL - 表的增删查改
  • 思科实现网络地址转换(NAT)和访问控制列表(ACL)和动态路由配置并且区分静态路由和动态路由配置。
  • Vue3 调用子组件的方法和变量
  • 重学 Android 自定义 View 系列(九):侧边字母选择器
  • c++设计模式模块与系统
  • 机器学习之RLHF(人类反馈强化学习)
  • 11.22Pytorch_自动微分
  • LeetCode 2290. Minimum Obstacle Removal to Reach Corner
  • vue3+ant design vue实现上传组件图片默认展示
  • 技能之发布自己的依赖到npm上