【问题标题】:Date fields transformation from AWS Glue table to RedShift Spectrum external table从 AWS Glue 表到 RedShift Spectrum 外部表的日期字段转换
【发布时间】:2019-08-10 13:09:20
【问题描述】:

我正在尝试将 JSON 数据集从 S3 转换为 Glue 表模式到 Redshift 频谱以进行数据分析。创建外部表时,如何转换 DATE 字段?

需要突出显示来自 MongoDB 的 ISODate 格式的源数据。这里是 Glue 表格式。

  struct $date:string

在外部表中尝试了以下格式

startDate:struct<$date:varchar(40)>
startDate:struct<date:varchar(40)>
startDate:struct<date:timestamp>

Redshift Spectrum 或 Glue 中是否有解决方法来处理 ISODate 格式?还是建议回源转换ISOdate格式?

【问题讨论】:

    标签: json aws-glue isodate amazon-redshift-spectrum


    【解决方案1】:

    假设您在胶水中使用 Python,并假设 Python 将您的字段理解为日期,您可以执行以下操作:

    from pyspark.sql.functions import date_format
    from awsglue.dynamicframe import DynamicFrame
    from awsglue.context import GlueContext
    
    
    def out_date_format(to_format):
        """formats the passed date into MM/dd/yyyy format"""
        return date_format(to_format,"MM/dd/yyyy")
    
    #if you have a dynamic frame you will need to convert it to a dataframe first:
    #dataframe = dynamic_frame.toDF()
    
    dataframe.withColumn("new_column_name", out_date_format("your_old_date_column_name"))
    
    #assuming you are outputting via glue, you will need to convert the dataframe back into a dynamic frame:
    #glue_context = GlueContext(spark_context)
    #final = DynamicFrame.fromDF(dataframe, glue_context,"final")
    
    

    根据您获取数据的方式,可能还有其他选项可以使用映射或格式化。 如果 python 不将您的字段理解为日期对象,则需要先对其进行解析,例如:

    import dateutil.parser
    
    #and the convert would change to:
    
    def out_date_format(to_format):
        """formats the passed date into MM/dd/yyyy format"""
        yourdate = dateutil.parser.parse(to_format)
        return date_format(yourdate,"MM/dd/yyyy")
    

    请注意,如果 dateutil 没有内置到胶水中,您需要使用如下语法将它添加到您的作业参数中: "--additional-python-modules" = "python-dateutil==2.8.1"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-23
      • 2021-09-30
      • 2018-04-21
      相关资源
      最近更新 更多