【问题标题】:hive parse string from log配置单元从日志中解析字符串
【发布时间】:2018-02-14 06:58:54
【问题描述】:

我在从日志文件中解析字符串时遇到问题,是这样的:

"skey":"110","scp_id":"OC05","capedge":"3G"
"skey":"140","scp_id":"OC02","capedge":"3G"
"skey":"0","scp_id":"OC01","capedge":"3G"

这是我们表的预期输出

|   skey    |   scp_id  |   capedge |
|   110     |   OC05    |   3G      |
|   140     |   OC02    |   3G      |
|   0       |   OC01    |   3G      |

我尝试使用https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF 中的 parse_url 方法,但不幸的是我们的字符串不是 url 格式,有没有更好的方法呢?还是我必须为此使用 regexp_extract?

谢谢你, 加利赫

【问题讨论】:

  • 您使用哪种编程语言?
  • @BijuPDais Hive,使用 HQL

标签: regex hive extract


【解决方案1】:

您可以结合使用SPLIT 函数和REGEXP_EXTRACT

select REGEXP_EXTRACT( skey     , ':"(\\w+)"', 1) as skey,
       REGEXP_EXTRACT( scp_id   , ':"(\\w+)"', 1) as scp_id,
       REGEXP_EXTRACT( capedge  , ':"(\\w+)"', 1) as capedge 
       from (
              select SPLIT(log_record, ',' )[0]  as skey,
                     SPLIT(log_record , ',')[1]  as scp_id,
                     SPLIT( log_record , ',')[2] as capedge 
                    FROM yourtable
              )  a;

HUE DEMO : 用户 id,pwd : demo,demo

【讨论】:

  • 嗨,您的解决方案运行了,但它只返回了 1 行,(因为我在色调中尝试过它只返回 1 行),谢谢
  • @galih :在 Hue 中,我只向您展示了第一行的示例。请参阅我上面的查询。您需要从表中选择一列 log_record ,其中包含这些记录。我希望您将日志文件记录加载为表中的行。
猜你喜欢
  • 2016-10-14
  • 2019-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-06
  • 2013-07-06
  • 1970-01-01
相关资源
最近更新 更多