zander1024
V2EX  ›  问与答

关于读取分析大文本文件的问题

  •  
  •   zander1024 · Jul 5, 2016 · 3657 views
    This topic created in 3773 days ago, the information mentioned may be changed or developed.
    RT,手机版游戏用的 Linux 服务器,负责人说 Linux 不用写日志到数据库,写到文本文件就好了,很容易分析出来....
    其实我是想喷他的,奈何他是老大。 有没有什么语言能够快速分析这种大文本文件的,我去学下...
    Supplement 1  ·  Jul 6, 2016
    啪啪啪 脸好疼 我也没描述清楚... 现在是来分析用户对战纪录等一些结构化数据日志, 我觉得用文本形式还得把字符串解析成运营能看懂的表格模式... 数据库可以直接查,文本型不太方便
    Supplement 2  ·  Jul 6, 2016
    最终就是我每天定时解析下上一天的文本 存到数据库...
    23 replies  •  2016-07-06 11:46:47 +08:00
    iyaozhen
    iyaozhen
    Jul 5, 2016 via Android
    1
    →_→为什么要写日志到数据库,数据库远没有文件稳定呀。写数据库业务还要处理数据库的连接,效率和性能都不高。

    分析日志然后入库有个专业术语叫 ETL ,简单的可以用 Python 、 shell 来做一天几百 g 的日志完全没问题,数据量大的就要用 Hadoop , spark 这一套了
    sorra
    sorra
    Jul 5, 2016
    2
    大多数语言,只要支持文件流,一段一段读进来。例如 Java FileReader
    b821025551b
    b821025551b
    Jul 5, 2016
    3
    日志有多大?每天到 Tb 级别了么?没到 Tb 用文本没什么问题, shell 脚本还是很强大的。
    jugelizi
    jugelizi
    Jul 5, 2016
    4
    文件日志有什么问题?
    9hills
    9hills
    Jul 5, 2016
    5
    你老大说的对,日志写数据库的才是脑抽。日志里提取的数据才需要写到数据库里
    9hills
    9hills
    Jul 5, 2016
    6
    另外日志处理的速度基本取决于 IO 速度。。
    fcicq
    fcicq
    Jul 5, 2016
    7
    除了不能和结构化比压缩比以外没缺点. 数据库不好好搞根本达不到这个对比点.
    qiayue
    qiayue
    Jul 5, 2016
    8
    ZB 不成反被 C
    Jaylee
    Jaylee
    Jul 5, 2016
    9
    小伙子 你要走的路还长啊
    h4x3rotab
    h4x3rotab
    Jul 5, 2016 via iPhone
    10
    导入分布式文件系统跑 mapreduce
    xuboying
    xuboying
    Jul 5, 2016 via Android
    11
    也有运维用 elk 作为解决方案,类似数据库,当然纯文本数据分析绝对是 Perl/Python 的天下。
    cszhiyue
    cszhiyue
    Jul 5, 2016
    12
    你们老大说得对
    changshu
    changshu
    Jul 5, 2016
    13
    如果数据库指的是关系数据库的话, 你老大干得对
    3dwelcome
    3dwelcome
    Jul 5, 2016 via Android
    14
    大家没理解楼主的意思…楼主是问如何 sql 语句来解析文本 log 。

    没数据库无所谓…没 select 可怎么活。
    omengye
    omengye
    Jul 5, 2016
    15
    之前用 c++读文本文件,十多个 G 也就几秒钟读个遍。只需要把文件中需要的东西整理出来入库我觉得就行,两个程序一个读、一个入库方便查询。如果只是用来统计日志信息的
    droiz
    droiz
    Jul 5, 2016
    16
    日志写文件里很正常+正确+普遍啊,,,
    gulucn
    gulucn
    Jul 5, 2016
    17
    你老大说的对,正确的处理流程应该是程序写日志,然后工具扫描日志进行处理,可以导入数据库或其他处理的。
    qqmishi
    qqmishi
    Jul 5, 2016
    18
    日志不处理直接写到数据库才叫好玩, linux 下用 sed 、 awk 、 grep 三个可以很好的处理大型文本文件了
    ototsuyume
    ototsuyume
    Jul 6, 2016
    19
    有些日志可以写入 OLAP 做优化的 db 方便做分析,比如广告点击的 log 。但是假如你的日志是单纯用来 debug 的那写数据库就是脑抽了
    m939594960
    m939594960
    Jul 6, 2016
    20
    围观楼主被打脸
    testlc
    testlc
    Jul 6, 2016
    21
    有相对固定的格式,就映射到内存用 c 去抠字节。
    zander1024
    zander1024
    OP
    Jul 6, 2016
    22
    啪啪啪 脸好疼 我也没描述清楚... 现在是来分析用户对战纪录等一些结构化数据日志, 我觉得用文本形式还得把字符串解析成运营能看懂的表格模式... 数据库可以直接查,文本型不太方便
    domty
    domty
    Jul 6, 2016
    23
    @zander1024
    你完全可以写个定时脚本去分析日志然后转存。
    实时记录日志,如果日志内容过多的话会给影响相应速度的吧。
    也可以搞个消息队列之类的东西。操作完成后给队列插一条消息让消息队列自己去记录日志。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1389 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 52ms · UTC 20:55 · PVG 04:55 · LAX 12:55 · JFK 15:55
    ♥ Do have faith in what you're doing.