V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
zander1024
V2EX  ›  问与答

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

  •  
  •   zander1024 · Jul 5, 2016 · 3192 views
    This topic created in 3582 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
        1
    iyaozhen  
       Jul 5, 2016 via Android
    →_→为什么要写日志到数据库,数据库远没有文件稳定呀。写数据库业务还要处理数据库的连接,效率和性能都不高。

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

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