簡體   English   中英

AWS Glue ETL 到 Redshift:日期

[英]AWS Glue ETL to Redshift: DATE

我正在使用 AWS Glue 將 ETL 數據傳輸到 Redshift。 我遇到了一個問題,我的日期在 Redshift 中加載為 null。

我設置了什么:

  • 將 csv 上傳到 S3,參見示例數據:

項目 | 顏色 | 價格 | 日期

襯衫| 棕色 | 25.05 | 03-01-2018

褲子| 黑色 | 20.99 | 02-14-2017

  • 爬行S3 object

  • 創建一個 Redshift 表,參見架構:

    項目:字符串顏色:字符串價格:十進制/數字日期:日期

  • 將數據加載到 Redshift 的腳本,請參閱腳本:


    import sys
    from awsglue.transforms import *
    from awsglue.utils import getResolvedOptions
    from pyspark.context import SparkContext
    from awsglue.context import GlueContext
    from awsglue.job import Job
    from pyspark.sql.functions import to_date, col
    from awsglue.dynamicframe import DynamicFrame
    
    glueContext = GlueContext(SparkContext.getOrCreate())
    
    items_dynamicframe = glueContext.create_dynamic_frame.from_catalog(
           database = "rdshft-test",
           table_name = "items")
    items_dynamicframe.printSchema()
    
    #Attempt to get date loaded correctly to Redshift
    data_frame = items_dynamicframe.toDF()
    data_frame.show()
    data_frame = data_frame.withColumn("date",
              to_date(col("date"),"d-M-Y"))
    data_frame.show()

任何反饋表示贊賞。 謝謝你。

我能夠通過轉換回動態框架來解決這個問題。 將數據移植到筆記本時,我使用的是動態框架。 但是,要將字符串轉換為日期,我必須使用 dataframe(更具體地說是 pyspark sql 函數)。 要加載到 Redshift,我必須轉換回動態幀。 假設這是 Glue 的要求?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM