gpt4 book ai didi

regex - 正则表达式正确将Weblog导入Hive

转载 作者:行者123 更新时间:2023-12-02 21:46:51 25 4
gpt4 key购买 nike

我正在尝试提出一个正则表达式,以便可以将Weblog导入Hive。我不是正则表达式专家,并且在尝试处理具有不同元数据的日志中的两种不同事务类型时遇到问题。

日志包含一个Request和一个Reply事务,正则表达式可以满足Request事务,但是在Reply上失败,因为Reply的数据中包含“Heartbeat”。
日志每天最多可以包含2万个或更多条目。

我的正则表达式

    (^[0-9]*) ([0-9]*) ([0-9]*) ([0-9]*) ([0-9]*) ([^ ]*) ([^ ]*)   ([^ ]*)   ([0-9]*) ([0-9]*) ([0-9]*) ([^ ]*)(?:[:]) ([0-9]+.[0-9]+(?:\ms)) ([^ ]*)(?:[:]) (.*)\n

预期结果:
  • 正则表达式必须处理“回复”中的“心跳”数据,而不能处理“请求”中的数据
  • 在数据中,我不想在事务类型的末尾和SessionKey的末尾导入':'冒号。我在上面实现的正则表达式似乎排除了它,但是我不确定它是否正确。
  • 在“心跳”响应中,消息中返回时间戳和“ms”毫秒,最初如上面的regex所示,要导入单词“ms”,但是现在我需要从导入中排除它问题获取正确的表达式以排除

  • 博客示例:

    请求事务:

    样本数据
    0 20140625095038864 20140625095038864 0000 006 00/0000/000 LSEMPPRD   Nestra   000 000000 00 Request: fafe805e-614e-41dd-9b0f-8ec5fbc8c882

    结构:
    Version = 0 
    EventTime = 20140625095038864
    LogTime = 20140625095038864
    SequenceNumber = 0000
    Level = 006
    InternalArea = 00/0000/000
    MachineName = LSEMPPRD
    ApplicationName = Nestra
    DiscardedMessageCount = 000 000000 00
    TranType = Request:
    SessionKey = fafe805e-614e-41dd-9b0f-8ec5fbc8c882
    Message = <GetAccountInfo xmlns="http://tempuri.org/"><accountSession xmlns:b="http://schemas.datacontract.org/2004/07/ApplicationServices.DataContracts.Common" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><b:SessionKey>8c737876-fccb-4352-8d06-9f19ccb34fd6</b:SessionKey><b:SessionToken i:nil="true"></b:SessionToken></accountSession></GetAccountInfo>

    回复交易:

    样本数据
    0 20140625095038615 20140625095038646 0000 006 00/0000/000 LSEMPPRD   Nestra   000 000000 00 Reply: 296.4057ms d594891a-6d9c-4b5c-913a-9dc302277534:

    结构:
    Version = 0 
    EventTime = 20140625095038615
    LogTime = 20140625095038646
    SequenceNumber = 0000
    Level = 006
    InternalArea = 00/0000/000
    MachineName = LSEMPPRD
    ApplicationName = Nestra
    DiscardedMessageCount = 000 000000 00
    TranType = Reply:
    Heartbeat = 296.4057ms
    SessionKey = d594891a-6d9c-4b5c-913a-9dc302277534:
    Message = <GetAccountInfo xmlns="http://tempuri.org/"><accountSession xmlns:b="http://schemas.datacontract.org/2004/07/ApplicationServices.DataContracts.Common" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><b:SessionKey>8c737876-fccb-4352-8d06-9f19ccb34fd6</b:SessionKey><b:SessionToken i:nil="true"></b:SessionToken></accountSession></GetAccountInfo>

    最佳答案

    在这里找到答案:

    注意:请确保使用的空间。使用前在rubular中测试

    正则表达式:

    (^[0-9]*) ([0-9]*) ([0-9]*) ([0-9]*) ([0-9]*) ([^ ]*) ([^ ]*)   ([^ ]*)   ([0-9]*) ([0-9]*) ([0-9]*) ([^ ]*)(?:[:]) ([0-9]+.[0-9]+|)(?:ms |)([^ ]*)(?:[:])

    数据:2行
    0 20140625095038864 20140625095038864 0000 006 00/0000/000 LSEMPPRD   Nestra   000 000000 00 Request: fafe805e-614e-41dd-9b0f-8ec5fbc8c882:
    0 20140625095038615 20140625095038646 0000 006 00/0000/000 LSEMPPRD Nestra 000 000000 00 Reply: 296.4057ms d594891a-6d9c-4b5c-913a-9dc302277534:

    正则表达式:(完整-还可以处理消息部分)-只需在末尾添加: (。* $)
    (^[0-9]*) ([0-9]*) ([0-9]*) ([0-9]*) ([0-9]*) ([^ ]*) ([^ ]*)   ([^ ]*)   ([0-9]*) ([0-9]*) ([0-9]*) ([^ ]*)(?:[:]) ([0-9]+.[0-9]+|)(?:ms |)([^ ]*)(?:[:]) (.*$)

    验证: rubular

    关于regex - 正则表达式正确将Weblog导入Hive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24443488/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com