【人工智能训练师】7 大数据处理与应用

devtools/2024/11/13 13:26:19/

大数据处理与应用(Hive技术)(0/100分)

1.本地开发工具连接Hadoop集群

1.本次环境版本为Hadoop2.7.7,对应eclips插件存放于云主机master:/usr/package277/中。
2.本机映射名为hadoop000,云主机Hadoop/Hive的hosts文件中IP需要修改为内网IP,需要修改为实际内网IP(服务器地址有内外网之分),本地eclipse所在主机需要使用外网IP设置映射;
Linux/Mac系统下文件地址:/etc/hosts
Windows系统下文件地址:C:\Windows\System32\drivers\etc\hosts
在这里插入图片描述

2.云主机搭建的Hadoop集群,集群之间通过内网通信,本地eclipse开发工具需要使用域名进行访问。

Hadoop配置文件是以内网IP作为机器间通信的IP。在这种情况下,我们能够访问到namenode机器,namenode会给我们数据所在机器的IP地址供我们访问数据传输服务,但是当写数据的时候,NameNode和DataNode是通过内网通信的,返回的是datanode内网的IP,我们无法根据该IP访问datanode服务器。将默认的通过IP访问,改为通过域名方式访问。

// 使用hdfs的fs功能,客户端就会访问core-site.xml配置文件
// 设置客户端访问datanode使用hostname来进行访问
conf.set("dfs.client.use.datanode.hostname", "true");
// 设置core-site.xml中的属性fs.defaultFS和属性值,注意主机名必须和设置的hosts主机名一致
conf.set("fs.defaultFS","hdfs://hadoop000:9000");

2.Hive安全配置 (20 / 20分)

为了大数据集群稳定性,类似非全等join(非inner join)是禁止的,禁用了SemanticException笛卡尔产品。

FAILED: SemanticException Cartesian products are disabled for safety reasons. If you know what you are doing, please sethive.strict.checks.cartesian.product to false and that hive.mapred.mode is not set to ‘strict’ to proceed. Note that if you may get errors or incorrect results if you make a mistake while using some of the unsafe features.

hive> set hive.strict.checks.cartesian.product;
# 首先查看hive.strict.checks.cartesian.product
hive> set hive.strict.checks.cartesian.product=false;
# 设置hive.strict.checks.cartesian.product为false
本次环境为单节点伪集群环境,环境中已经安装JDK1.8、Hadoop2.7.7、Mysql5.7、hive2.3.4。---1.环境中已经安装/root/software/hadoop-2.7.7,格式化HDFS,开启集群,查看集群状态。(HDFS端口为9000,其他端口默认)
# 对文件系统进行格式化
hadoop namenode -format
# 启动Hadoop集群查看各节点服务
start-all.sh  
> yes2.环境中已经安装/root/software/apache-hive-2.3.4-bin,需要开启mysql服务,初始化数据库,即可开启Hive客户端。# 开启mysql服务
systemctl status mysqld
systemctl start mysqld# 初始化数据库,启动metastore服务
schematool -dbType mysql -initSchema
hive --service metastore &# 进入hive,创建hive数据库
hive
> create database hive;本步骤用于开启集群环境,用于后续数据分析(Hadoop Mapreduce/Hive)使用。

区域热门商品分析 (80 / 80分)

项目背景

本项目针对电商网站运营,对每个领域用户关心的商品进行统计分析,支持用户决策。分析各区域对产品的不同需求,进行差异化研究,例如A地区用户喜欢电子,B地区用户喜欢汽车。

需求分析

1.热门商品即通过用户对商品的点击量来衡量商品热度。
2.如何获取区域信息数据:

通过用户点击日志,获取访问IP,进而获取区域信息。
通过数据库中的订单关联用户表,获取用户的地域信息

数据说明

product(商品)表:(/root/shop/product.txt)

列名product_idproduct_namemarquebarcodepricebrand_idmarket_pricestockstatus
描述商品号商品名称商品型号仓库条码商品价格商品品牌市场价格库存状态
数据类型stringstringstringstringdoublestringdoubleintint

补充说明:

status: 下架-1,上架0,预售1

area(地区信息)表:(/root/shop/area.txt)

列名area_idarea_name
描述地区编号地区名称
数据类型stringstring

user_click(用户点击信息)表:(/root/shop/user_click.txt)

列名user_iduser_ipurlclick_timeaction_typearea_id
描述用户ID用户IP用户点击URL用户点击时间动作名称
数据类型stringstringstringstringstringstring

补充说明:

action_type: 1 收藏,2 加购物车,3 购买 
area_id:这里的地区信息已经通过IP地址(user_ip)进行解析

clicklog(用户点击商品日志表)表:

列名 user_id user_ip product_id click_time action_type area_id
描述 用户ID 用户IP URL解析对应商品ID 用户点击时间 动作名称 地区ID
数据类型 string string string string string string
补充说明:

根据user_click中用户点击URL进行解析,得到product_id
示例:URL数据`http://mystore.jsp/?productid=1`中product_id为1

area_hot_product(区域热门商品)表:

列名 area_id area_name product_id product_name pv
描述 地区ID 地区名称 商品ID 商品名称 访问量
数据类型 string string string string BIGINT

# 1. 进入Hive客户端,创建shop数据库(前提开启Hadoop集群)
create database shop;
# 创建商品表product,并上传本地数据至表内
use shop;CREATE TABLE product(product_id string,product_name string,marque string,barcode string,price double,brand_id string,market_price double,stock int,status int
)row format delimited fields terminated by ',';
# 上传本地数据至表内
LOAD DATA LOCAL INPATH '/root/shop/product.txt' INTO TABLE product;# 3.创建地区表area,并上传本地数据至表内
CREATE TABLE area(area_id string,area_name string
)row format delimited fields terminated by ',';
# 上传本地数据至表内
LOAD DATA LOCAL INPATH '/root/shop/area.txt' INTO TABLE area;# 4.创建用户点击信息user_click,并上传本地数据至表内
CREATE TABLE user_click(user_id string,user_ip string,url string,click_time string,action_type string,area_id string
)row format delimited fields terminated by ',';
# 上传本地数据至表内
LOAD DATA LOCAL INPATH '/root/shop/user_click.txt' INTO TABLE user_click;# 5.创建用户点击商品日志表clicklog,解析user_click用户点击信息表中的product_id
CREATE TABLE clicklog(user_id string,user_ip string,product_id string,click_time string,action_type string,area_id string
)row format delimited fields terminated by ',';# 解析user_click用户点击信息表中的product_id
SELECT parse_url(concat(url),'QUERY','productid') as product_id FROM user_click;# 将查询结果 插入clicklog
INSERT INTO TABLE clicklog
SELECT user_id, user_ip, parse_url(concat(url),'QUERY','productid') as product_id, click_time,action_type,area_id FROM user_click;# 6.创建结果分析区域热门商品表area_hot_product,统计各地区热门商品访问量pvCREATE TABLE area_hot_product(area_id string,area_name string,product_id string,product_name string,pv BIGINT
)row format delimited fields terminated by ',';# 将查询结果 插入clicklog
INSERT INTO TABLE area_hot_product
SELECT collect_set(c.area_id)[0] as area_id, collect_set(a.area_name)[0] as area_name, collect_set(c.product_id)[0] as product_id, collect_set(p.product_name)[0] as product_name, COUNT(c.user_id) as pv
FROM clicklog c
JOIN area a ON c.area_id = a.area_id
JOIN product p ON c.product_id = p.product_id
GROUP BY a.area_id, p.product_id;# 7.查询表area_hot_product全部数据,结果写入本地目录/root/data/shop/area_hot_product
INSERT OVERWRITE LOCAL DIRECTORY '/root/data/shop/area_hot_product'
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
SELECT * FROM area_hot_product;

http://www.ppmy.cn/devtools/133054.html

相关文章

超子物联网HAL库笔记:定时器[基础定时]篇

超子物联网 HAL库学习 汇总入口: 超子物联网HAL库笔记:[汇总] 写作不易,如果您觉得写的不错,欢迎给博主来一波点赞、收藏~让博主更有动力吧! 一、资源介绍:STM32F103C8T6定时器资源介绍 高级定时器&#x…

CSRF详解

CSRF,全称是Cross-Site Request Forgery,即跨站请求伪造,也被称为“one click attack”或者session riding,是一种网络攻击方式。它允许攻击者诱导用户在已登录的Web应用程序上执行非预期的操作。 工作原理CSRF攻击通常涉及三个主…

Spring Security @PreAuthorize @PostAuthorize 权限控制

PreAuthorize : 在方法执行之前进行权限验证 PostAuthorize : 在方法执行之后进行权限验证 注解参数: hasRole,对应 public final boolean hasRole(String role) 方法,含义为必须含有某角色(非ROLE_开头),如有多个的…

vue,uniapp,微信小程序解决字符串中出现数字则修改数字样式,以及获取字符串中的数字

简单记录一下,最近遇到的一个新需求:后端返回的是非富文本,只是一串字符串,其中包含了文字和数字,前端需要将出现数字的地方将其加粗或者修改颜色等需求 设计思路:(简单做个记录方便以后理解&a…

mac-泛洪

泛洪攻击的类型 TCP SYN Flood: 攻击者向目标服务器发送大量的 TCP SYN 请求,但不完成握手过程。服务器为每个请求分配资源,最终可能耗尽其连接表,导致无法处理正常请求。 UDP Flood: 攻击者向目标发送大量的 UDP 数据…

spring AOP详解

文章目录 AOP1 环境准备1.1 工程及接口创建1.2 工程存在的问题1.2.1 问题1.2.2 解决思路 2 AOP面向切面编程2.1 AOP概述2.2 AOP原理分析 3 基于注解的AOP3.1 入门示例3.2 使用流程3.3 切入点表达式3.4 练习3.5 通知类型 AOP ​ AOP(Aspect Orient Programming&…

gitlab无法创建合并请求是所有分支都不显示

点击Merge Requests ------> New merge request 创建新的合并请求时,在Source branch和Target branch中一个分支都不显示 排查思路: 1.怀疑是权限问题。 发现只有我的一个账号出现,检查了账号的权限,尝试了master、develop角色…

图像手动标注-labelme+yolo格式导出

conda环境 运行以下命令来激活你的虚拟环境: conda activate labelme如果你没有创建 labelme 环境,首先需要创建一个环境并安装 labelme: conda create -n labelme python3.8 conda activate labelme conda install -c conda-forge labelm…