我一直在使用AWS Glue进行一些快速分析,遵循这里教程。
虽然我已经成功地创建了爬行器并在雅典娜中发现了数据,但我对爬虫创建的数据类型存在问题。date和timestamp数据类型被读取为string数据类型。
接着,我使用爬虫创建的数据源作为ETL S3中的输入和目标表,在GLUE中创建了一个S3作业。
作为映射转换的一部分,我将日期和时间戳的数据类型转换为string到timestamp,但不幸的是,ETL将这些列类型转换为NULLS。我考虑过使用带有GROK表达式的分类器,但随后决定将它们转换为胶水中ETL的一部分。
时间戳格式为1/08/2010 6:15:00 PM
发布于 2018-08-29 11:18:20
我不知道您使用的时间戳格式是什么,因此我假设该格式如下:
2018-05-30T12:22:07.000Z在这种情况下,可以在表定义中设置serde参数,如下所示:
'timestamp.formats'='yyyy-MM-dd\'T\'HH:mm:ss.SSSZ'发布于 2018-09-19 12:31:24
下面是时间戳数据的内置分类器。如您所见,您所拥有的数据与其中任何数据都不匹配。您需要创建一个自定义分类器,然后将其添加到一个新的Crawler中(更新现有的爬虫不起作用)。
TIMESTAMP_ISO8601 %{YEAR}-%{MONTHNUM}-%{MONTHDAY}[T ]%{HOUR}:?%{MINUTE}(?::?%{SECOND})?%{ISO8601_TIMEZONE}?
TZ (?:[PMCE][SD]T|UTC)
DATESTAMP_RFC822 %{DAY} %{MONTH} %{MONTHDAY} %{YEAR} %{TIME} %{TZ}
DATESTAMP_RFC2822 %{DAY}, %{MONTHDAY} %{MONTH} %{YEAR} %{TIME} %{ISO8601_TIMEZONE}
DATESTAMP_OTHER %{DAY} %{MONTH} %{MONTHDAY} %{TIME} %{TZ} %{YEAR}
DATESTAMP_EVENTLOG %{YEAR}%{MONTHNUM2}%{MONTHDAY}%{HOUR}%{MINUTE}%{SECOND}
CISCOTIMESTAMP %{MONTH} %{MONTHDAY} %{TIME}https://stackoverflow.com/questions/52032349
复制相似问题