pyspark 获取本地数据文件_使用 Python+PySpark 做用户画像

本文通过PySpark对用户行为数据进行处理,计算用户点击率并生成用户标签。首先,从本地文件读取action.txt和document.txt,然后统计用户点击行为,计算点击率,并将结果保存到本地。接着,基于用户点击行为和文档主题为用户打标签,同样保存结果。在处理过程中注意避免增加不必要的计算负担。
摘要由CSDN通过智能技术生成

一、数据准备

本文主要是作为一个PySpark的入手实例来做,数据来源网络。主要用到两个数据文件:action.txt,document.txt。下表为action.txt,数据格式:userid~docid~behaivor~time~ip,即:用户编码~文档编码~行为~日期~IP地址

1265cdd9cfcc95a4a94f8e7684ed08f9.png

下表为document.txt,数据格式:docid~channelname~source~keyword:score,即:文档编码~类别(大类)~主题(细类)~关键词:权重

118df16a6b2decfe7e72ea350bd4570a.png

二、用户点击率

用户点击率即为action.txt文件中每个用户behaivor列中1的数量除以0的数量。

1、创建SparkSession对象

d39bd1020b5fe03edce9dcee95752759.png

2、读取数据,将数据根据‘~’拆分,获取userid和behavior两列

d39bd1020b5fe03edce9dcee95752759.png

click_rate1数据如下:

d39bd1020b5fe03edce9dcee95752759.png

3、统计用户的各类行为数

d39bd1020b5fe03edce9dcee95752759.png

click_rate2数据如下:

d39bd1020b5fe03edce9dcee95752759.png

4、将userid,behavior和数量取出作为3列,并转为DataFrame格式

5f4a7d8cff4fea41ed2c4931b44e8d3c.png

click_rate3_df数据如下:

d3368e81be8a03bbe627fe0a81660d33.png

5、根据userId进行分组,将behavior列数据进行旋转作为列标数值为cnt。并将behavior的0和1替换为“browse”和”click”。

ed23edec3c58a39eabcf58e4b354b1be.png

click_rate5数据如下:

d6aaeb078fa4c03def6f42b8020513ae.png

6、填充缺失值

d39bd1020b5fe03edce9dcee95752759.png

click_rate6数据如下:

d39bd1020b5fe03edce9dcee95752759.png

7、将计算的数据作为新列添加到数据

d39bd1020b5fe03edce9dcee95752759.png

click_rate数据如下:

d39bd1020b5fe03edce9dcee95752759.png

8、将最后处理的数据保存到本地,关闭SparkSession

d39bd1020b5fe03edce9dcee95752759.png

最后保存到本地的数据为多个文件,每个文件的格式如下:

3ffc74ad3f6b0a1b5e861aae2c39b354.png
679460f7e59ac4579c7b56b2eb042ccd.png

三、用户标签

使用主题(细类)给用户打标签

1、读取docunment.txt,获取docid、source两列,即文档编码和主题(细类)两列

f9424d8b34c4a74b26fedf8b60b40f82.png

sources_df数据如下:

a22d829f97c19eefe9882de3b13e0eb3.png

2、读取action.txt,只获取具有点击行为的userid和docid数据,即behavior为1的数据。

d39bd1020b5fe03edce9dcee95752759.png

actions_df数据如下:

d39bd1020b5fe03edce9dcee95752759.png

3、创建两个DataFrame的临时视图

d39bd1020b5fe03edce9dcee95752759.png

4、进行关联查询

d39bd1020b5fe03edce9dcee95752759.png

interestTags数据如下:

d39bd1020b5fe03edce9dcee95752759.png

5、将最后处理的数据保存到本地,关闭SparkSession

34d37469dac908a45f7c27e42608dd6d.png

导出后的数据如下:

c54446e5eab7a5637b48eda064bb1dc5.png

踩雷点:

1、代码开发时,可以每个操作跟一个action,方便查看数据,跑批的时候不需要每个都跟,只需要最后一个action,否则会给机器增加很多工作量。

2、中间过程生成的DataFrame必须先建立临时视图,后面才能使用,否则会报错

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值