我需要在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}
由于用户@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})