news 2026/8/7 11:29:50

100万行文本数据(Python生成数据)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
100万行文本数据(Python生成数据)

1. 生成数据代码

#!/usr/bin/env python3# -*- coding: utf-8 -*-""" Generate large comma-separated TXT data for single-node text processing. Each line = one record, fields separated by ',' (no quotes). """importargparseimportdatetimeasdtimportgzipimportosimportrandomfromtypingimportIO METHODS=["GET","POST","PUT","DELETE"]PATHS=["/api/login","/api/logout","/api/orders","/api/orders/{id}","/api/users/{id}","/api/products","/api/products/{id}","/api/search","/api/metrics","/health"]STATUS_POOL=([200]*70+[201]*5+[204]*5+[400]*5+[401]*2+[403]*2+[404]*6+[429]*1+[500]*3+[502]*1)UA_IDS=list(range(1,51))# 1..50defopen_text(path:str,gzip_on:bool)->IO[str]:os.makedirs(os.path.dirname(os.path.abspath(path)),exist_ok=True)ifgzip_onorpath.endswith(".gz"):returngzip.open(path,"wt",encoding="utf-8",newline="\n")returnopen(path,"w",encoding="utf-8",newline="\n")defrand_ip(rng:random.Random)->str:r=rng.random()ifr<0.15:returnf"10.{rng.randrange(256)}.{rng.randrange(256)}.{rng.randrange(1,255)}"ifr<0.25:returnf"192.168.{rng.randrange(256)}.{rng.randrange(1,255)}"returnf"{rng.randrange(1,224)}.{rng.randrange(256)}.{rng.randrange(256)}.{rng.randrange(1,255)}"defrand_path(rng:random.Random)->str:p=rng.choice(PATHS)if"{id}"inp:returnp.replace("{id}",str(rng.randrange(1,200_000)))returnpdefrand_trace_id(rng:random.Random,n:int=16)->str:return"".join(rng.choice("0123456789abcdef")for_inrange(n))deflatency_ms(rng:random.Random,status:int)->int:base=int(rng.lognormvariate(3.6,0.55))# 常见 20~200msifstatus>=500:base+=rng.randrange(200,900)elifstatus>=400:base+=rng.randrange(50,300)returnmin(base,5000)defbytes_sent(rng:random.Random,path:str,status:int)->int:ifstatus==204:return0if"/metrics"inpath:returnrng.randrange(5_000,30_000)if"/products"inpathor"/search"inpath:returnrng.randrange(800,12_000)if"/orders"inpath:returnrng.randrange(600,9_000)ifstatus>=400:returnrng.randrange(200,2_000)returnrng.randrange(300,6_000)defgenerate(out:str,lines:int,users:int,start_time:dt.datetime,span_seconds:int,seed:int,gzip_on:bool)->None:rng=random.Random(seed)withopen_text(out,gzip_on)asf:for_inrange(lines):ts=start_time+dt.timedelta(seconds=rng.randrange(span_seconds))ts_str=ts.strftime("%Y-%m-%dT%H:%M:%S")ip=rand_ip(rng)user_id=rng.randrange(1,users+1)method=rng.choice(METHODS)path=rand_path(rng)status=rng.choice(STATUS_POOL)latency=latency_ms(rng,status)size=bytes_sent(rng,path,status)ua_id=rng.choice(UA_IDS)trace_id=rand_trace_id(rng)f.write(f"{ts_str},{ip},{user_id},{method},{path},"f"{status},{latency},{size},{ua_id},{trace_id}\n")defmain():ap=argparse.ArgumentParser()ap.add_argument("--lines",type=int,default=1_000_000)ap.add_argument("--users",type=int,default=200_000)ap.add_argument("--start",type=str,default="2025-12-01T00:00:00")ap.add_argument("--span-seconds",type=int,default=86400)ap.add_argument("--seed",type=int,default=42)ap.add_argument("--out",type=str,default="data/log_1m.txt")ap.add_argument("--gzip",action="store_true")args=ap.parse_args()generate(out=args.out,lines=args.lines,users=args.users,start_time=dt.datetime.fromisoformat(args.start),span_seconds=args.span_seconds,seed=args.seed,gzip_on=args.gzip)if__name__=="__main__":main()

2. 数据说明

2.1. 数据字段快速对齐

每一行字段含义(固定顺序):

ts, ip, user_id, method, path, status, latency_ms, bytes, ua_id, trace_id

例如:

2025-12-01T23:16:50,10.140.125.58,36580,GET,/api/metrics,200,39,8070,14,706d7e805da846a3

3. 基础统计场景(必做|热身级)

这些是任何实现都应该先完成的


场景 1:总请求数 & 错误请求数

统计内容

  • 总行数(Total Requests)
  • status >= 400的请求数
  • 错误率(Error Rate)

工程价值

  • 验证流式读取是否正确
  • 验证条件判断是否高效

场景 2:按状态码分布统计

输出示例

200 -> 734,921 204 -> 48,203 401 -> 12,881 404 -> 65,102 500 -> 9,871

工程考点

  • HashMap / Dictionary 的使用

  • key 数量小,适合优化


场景 3:HTTP 方法分布

GET -> xxx POST -> xxx PUT -> xxx DELETE -> xxx

用于验证你是否避免无意义对象创建


4. Top N 场景(核心|性能分水岭)

这些是面试/博客最爱问的


场景 4:Top 10 IP(访问量最高)

统计规则

  • ip计数
  • 输出 Top 10

❌ 错误做法

  • 全量排序

✅ 正确做法

  • HashMap + 小顶堆(Top N)

场景 5:Top 10 用户(user_id)

user_id -> count

隐含考点

  • user_id 数量巨大(几十万)
  • 内存控制
  • key 的类型选择(int vs string)

场景 6:Top 10 接口(path)

/api/metrics /api/orders /api/users/{id}

进阶版本

  • /api/users/104594归一化成/api/users/{id}
    (这一步非常工程)

5. 时间窗口聚合(工程必备)


场景 7:按分钟 QPS(Requests Per Minute)

处理方式

  • 2025-12-01T23:16:502025-12-01T23:16

输出示例

2025-12-01T23:16 -> 834 2025-12-01T23:17 -> 921

工程考点

  • 字符串截断 vs 时间解析
  • 是否避免LocalDateTime.parse

场景 8:按小时错误请求趋势

hour -> error_count

例如:

03 -> 412 08 -> 1291 17 -> 2387

6. 性能相关统计(非常加分)


场景 9:接口平均耗时(Mean Latency)

path -> avg(latency_ms)

注意

  • sum / count
  • 避免浮点精度陷阱

场景 10:最慢的 Top 10 请求

规则

  • latency_ms排序
  • 输出 trace_id + path + latency

工程考点

  • Top N(不是全排序)
  • 保留最小必要字段

7. 组合条件统计(高级工程题)


场景 11:错误请求中,Top 5 接口

status >= 400 AND GROUP BY path

非常贴近真实SRE / APM 分析


场景 12:大流量但失败率高的 IP

规则

  • IP 请求数 > X
  • 错误率 > Y%

这是真实生产排障模型


8. 资源/流量分析(现实业务向)


场景 13:总流量 & 平均流量

sum(bytes) avg(bytes)

场景 14:Top 10 流量消耗 IP

ip -> sum(bytes)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/8 0:34:10

负载均衡集群LVS详解及配置

情景导入当电商平台大促时&#xff0c;几十万用户同时涌入抢单&#xff0c;有的服务器忙到崩溃、有的却闲着没事&#xff0c;用户要么页面卡半天刷不出来&#xff0c;要么付完款订单却没生成&#xff0c;甚至某台服务器突然宕机导致一批用户直接无法操作&#xff0c;怎么才能让…

作者头像 李华
网站建设 2026/8/7 7:14:31

论文查重合格标准:从AI工具到学术规范的深度解析

论文查重合格标准&#xff1a;从AI工具到学术规范的深度解析 AI工具对比速览表 工具名称 核心功能 查重效率 适用场景 独特优势 AIbiye 论文降重与改写 高 初稿修改阶段 语义保持最佳 AIcheck 多平台查重比对 中高 终稿前检测 数据库最全面 AskPaper 文献溯源…

作者头像 李华
网站建设 2026/8/7 23:48:48

论文新手写作工具:9大AI工具推荐+步骤指南排名

论文新手写作工具&#xff1a;9大AI工具推荐步骤指南排名 工具核心特点速览 工具名称 效率评分 核心功能 适用场景 aibiye ⭐⭐⭐⭐ AIGC降重查重 AI生成内容优化 aicheck ⭐⭐⭐⭐ 论文查重降重 初稿快速处理 askpaper ⭐⭐⭐⭐⭐ 学术问答降AIGC 深度学术优化…

作者头像 李华
网站建设 2026/8/7 15:31:14

使用 pylintrc 配置 Python 代码检查的详细指南

使用 pylintrc 配置 Python 代码检查的详细指南 在 Python 项目中使用 Pylint 进行静态代码检查&#xff0c;可以大大提升代码质量与一致性。与其每次在命令行里堆一长串参数&#xff0c;不如通过 pylintrc 统一管理配置&#xff1a;忽略哪些规则、命名规范如何定义、导入路径…

作者头像 李华
网站建设 2026/8/7 15:59:55

在 VS Code 中使用 Black 格式化 Python 代码

在 VS Code 中使用 Black 格式化 Python 代码的详细指南 Black 是目前 Python 社区最流行的自动格式化工具之一&#xff0c;它的特点是“极少配置、强制风格”&#xff1a;你把代码交给 Black&#xff0c;它按照一套统一规则帮你排版&#xff0c;从此团队不用再纠结“空格还是换…

作者头像 李华
网站建设 2026/8/7 14:42:21

文科查重率标准:8大平台+降重技巧排名

文科查重率标准&#xff1a;8大平台降重技巧排名 8大论文查重平台核心对比 排名 平台名称 查重速度 降重效果 专业术语保留 适用场景 1 aibiye ⚡⚡⚡⚡ ⭐⭐⭐⭐ ✅✅✅ 高重复率论文紧急降重 2 aicheck ⚡⚡⚡ ⭐⭐⭐ ✅✅ 日常查重与基础降重 3 askpape…

作者头像 李华