hhhhhhcchzzcd 2024-05-25 10:13 采纳率: 0%
浏览 41

头歌 警务大数据之上网相关指标批处理 特定时间段频繁上网

头歌 警务大数据之上网相关指标批处理 特定时间段频繁上网,有没有能人帮忙解决一下
任务描述
本关卡属于警务大数据中的一个业务指标统计,从网吧的上网人员日志记录中进行批量计算,对上网时间异常、上网地点异常的人员进行统计,对有犯罪动机的人员进行监控、预警。

本关任务:统计出触及特定时间段频繁上网指标的人员。

相关知识
为了掌握本关知识,你需要掌握如下知识:

指标的定义

如何引入Phoenix-spark插件

Spark SQL如何通过Phoenix读取HBase表中数据

Spark SQL如何把处理结果通过Phoenix存入HBase

如何通过SQL语句处理结构化数据

指标定义
一周内有两次以上零点到六点之间上网的人。

数据源
本实训提供了一个月的上网人员信息数据。

表名:dw.ZNB_04_121800005

表结构:

字段名 数据类型 字段说明
XM VARCHAR 姓名
XB VARCHAR 性别
CSRQ VARCHAR 出生日期
MZ VARCHAR 民族
LGMC VARCHAR 上网名称
LGDZQH VARCHAR 上网地址区划
SSQBM VARCHAR 住址省市区
XZ VARCHAR 详址
LGDZ VARCHAR 上网地址
ZJLX VARCHAR 证件类型
RZSJ VARCHAR 上网时间
TFSJ VARCHAR 结束时间
RZFH VARCHAR 上网房号
ZJHM VARCHAR 证件号码
XP VARCHAR 相片
LKBH VARCHAR 上网编号旅客编号
LGBM VARCHAR 上网编码
主键:RZSJ,ZJHM

其中一条数据为:

注意:只有姓名,出生日期,上网地址名称,上网时间,结束时间和证件号码列有数据,证件号是唯一的**

结果数据存储
将结果数据依托于Phoenix存入HBase中。

表名:tdsjsw

表结构:

字段名 数据类型 说明
zjhm VARCHAR 证件号,非空,主键
theweek Integer 第几周,非空,主键
输出结果列为zjhm(证件号码),theweek(某周)

将 Phoenix 表加载为 DataFrame
通过 DataSource API可以把 phoenix 表加载成 DataFrame,只需要给定一个表 名和 Hbase 的 Zookeeper 地址。

保存 DataFrame
Phoenix-Spark 同样可以把 DataFrame 保存到 HBase,只需要给定表名 和 Zookeeper 地址。

编程要求
请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,完成指标的统计任务。

思路步骤:

通过Phoenix-Spark读取HBase表中数据

计算出触及指标的人员

通过Phoenix-Spark将结果数据存入HBase

原表和数据以及结果表均已创建完成

Zookeeper地址:127.0.0.1:2181

测试说明
补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过;

预期输出:

img

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-05-25 10:13
    关注

    引自免费微信小程序:皆我百晓生

    在警务大数据分析中,要追踪特定时间段内频繁上网的用户,我们可以采用数据预处理、特征提取、数据分析等步骤。这里是一个简化的Python脚本示例,使用pandas库进行数据处理,并通过设定阈值来识别频繁上网的用户。

    首先,确保已经安装了必要的库:

    pip install pandas numpy
    

    接下来是Python代码实现:

    import pandas as pd
    from datetime import datetime, timedelta
    
    # 假设我们有一个CSV文件,其中包含用户的上网记录,字段包括:用户ID(user_id)、上网时间戳(timestamp)和IP地址(ip_address)
    data = pd.read_csv("上网记录.csv")
    
    # 将timestamp列转换为datetime格式
    data["timestamp"] = pd.to_datetime(data["timestamp"])
    
    # 定义一个函数来计算用户在给定时间段内的上网次数
    def count_visits_in_period(user_data, start_time, end_time):
        return user_data[(user_data["timestamp"] >= start_time) & (user_data["timestamp"] < end_time)].shape[0]
    
    # 示例时间段,例如从2023-01-01 08:00到2023-01-01 16:00
    start_time = datetime(2023, 1, 1, 8, 0)
    end_time = datetime(2023, 1, 1, 16, 0)
    
    # 频繁上网的阈值,可以根据实际情况调整
    frequent_visits_threshold = 5
    
    # 创建一个新的DataFrame,用于存储频繁上网的用户信息
    frequent_users = pd.DataFrame(columns=["user_id", "visit_count"])
    
    # 对于每个用户,计算他们在指定时间段内的访问次数
    for user_id in data["user_id"].unique():
        user_visits = data[data["user_id"] == user_id]
        visit_count = count_visits_in_period(user_visits, start_time, end_time)
        
        # 如果访问次数超过阈值,则将用户添加到频繁用户列表中
        if visit_count > frequent_visits_threshold:
            frequent_users = frequent_users.append({"user_id": user_id, "visit_count": visit_count}, ignore_index=True)
    
    print(frequent_users)
    

    这个脚本会读取CSV文件中的上网记录,然后计算在指定时间段(例如上午8点至下午4点)内,哪些用户的上网次数超过了预先设置的阈值(这里是5次)。结果将以DataFrame的形式输出,包含频繁上网的用户ID及其对应的访问次数。

    注意,这只是一个基础的示例,实际应用可能需要考虑更复杂的情况,比如网络连接类型、地理位置、设备信息等。此外,为了保护隐私,可能还需要对原始数据进行脱敏处理。

    如果你有具体的数据样本或者需要进一步的帮助,请提供更多的细节,我可以根据这些信息给出更精确的建议。

    评论 编辑记录

报告相同问题?

问题事件

  • 修改了问题 5月25日
  • 修改了问题 5月25日
  • 创建了问题 5月25日

悬赏问题

  • ¥15 sessionStorage在vue中的用法
  • ¥15 wordpress更换域名后用户图片头像不显示
  • ¥15 如何在ubunto上安装CEF (Chromium Embedded Framework),并且基于qt实现打开一个web
  • ¥30 AD9854 为什么输出波形幅度受限,AI机器人勿扰
  • ¥15 如何在ubunto上安装CEF (Chromium Embedded Framework
  • ¥15 数据库原理及应用上机练习题
  • ¥15 如何联系真正的开发者而非公司
  • ¥15 有偿求苍穹外卖环境配置
  • ¥15 代码在keil5里变成了这样怎么办啊,文件图像也变了,
  • ¥20 Ue4.26打包win64bit报错,如何解决?(语言-c++)