AWS Glue Grok模式,时间戳以毫秒为单位

问题描述 投票:4回答:2

我需要在AWS Glue Classifie中定义一个grok模式,以毫秒为单位捕获文件datestamp列上的datetime(AWS Glue Crawler将其转换为string。我在其中使用了预定义的DATESTAMP_EVENTLOG AWS Glue并尝试将毫秒添加到模式中。

分类:datetime

粗纹:%{DATESTAMP_EVENTLOG:string}

自定义模式:

MILLISECONDS (\d){3,7}
DATESTAMP_EVENTLOG %{YEAR}-%{MONTHNUM}-%{MONTHDAY}T%{HOUR}:%{MINUTE}:%{SECOND}.%{MILLISECONDS}

我仍然无法成功实现模式。有什么想法吗?snapshot of grok

amazon-web-services logstash aws-glue logstash-grok
2个回答
3
投票
对分类器的误解是,它们用于指定文件格式,以及诸如JSON,CSV等内建文件的格式。而不是用于指定单个数据类型的解析格式。

由于用户@lilline建议更改数据类型的最佳方法是使用ApplyMapping函数。

[创建粘合作业时,您可以选择以下选项:

由AWS Glue生成的建议脚本

然后,当从“胶水目录”中选择表作为源时,可以更改数据类型,列名等。>

输出代码可能类似于以下内容:

applymapping1 = ApplyMapping.apply(frame = datasource0, mappings = [("paymentid", "string", "paymentid", "string"), ("updateddateutc", "string", "updateddateutc", "timestamp"), ...], transformation_ctx = "applymapping1")

有效地将更新的dateutc字符串强制转换为时间戳。

为了创建分类器,您需要指定文件中的每个单独列。

Classifier type: Grok Classification: Name Grok pattern: %{MY_TIMESTAMP} Custom patterns MY_TIMESTAMP (%{USERNAME:test}[,]%{YEAR:year}[-]%{MONTHNUM:mm}[-]%{MONTHDAY:dd} %{TIME:time})


1
投票
我也无法弄清楚如何使用分类器,但是我最终通过将自定义转换写入映射脚本(python),将时间戳从字符串转换为日期时间。
© www.soinside.com 2019 - 2024. All rights reserved.