【问题标题】:How do I convert String to date in AWS Glue?如何在 AWS Glue 中将字符串转换为日期?
【发布时间】:2021-05-14 12:31:38
【问题描述】:

当我在 S3 存储桶中的 parquet/csv 文件上从 Glue 运行爬虫时,它将 Date 作为字符串。我更改了编辑模式并将其设置为日期。不仅是日期,而且它不会更改编辑模式中的任何数据类型。当我从 Athena "select order_date from parque_sales" 发出查询时,错误是:

HIVE_BAD_DATA:parquet 中字段 order_date 的 BINARY 类型为 与表架构中定义的日期类型不兼容

我也尝试在 Glue studio 中更改架构,结果是一样的!

提前致谢!请帮忙!

【问题讨论】:

  • 您是否使用 GLUE 客户端 API 来调用此服务?
  • 我正在使用 Glue 爬虫将文件的元数据保存在 Glue 目录中的 S3 存储桶上,并使用 Athena 对粘合表运行查询。但是在 Glue 数据库中编辑模式以及作为亚马逊新服务的胶水工作室无法正常工作。似乎自定义转换会起作用,但我很困惑,因为胶水会生成自己的脚本。

标签: amazon-web-services amazon-s3 parquet aws-glue amazon-athena


【解决方案1】:

您的文件似乎将日期存储为镶木地板中的字符串,而不是日期。爬虫仍将这些作为字符串值接收,并在将源架构与定义的架构进行比较时失败。

为避免此问题,您应该在 athena 查询中使用显式转换。像这样的:

select date_parse(datestring,'%Y-%m-%d %h:%i:%s')

【讨论】:

  • 我试过了 - select date_parse(last_update,'%Y-%m-%d %h:%i:%s') from city;它给出了类似 INVALID_FUNCTION_ARGUMENT 的错误:无效格式:“”2006-02-15 04:45:25“”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-24
  • 1970-01-01
  • 2018-04-15
  • 2017-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多