Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services AWS将ETL粘附到红移:日期_Amazon Web Services_Amazon Redshift_Aws Glue_Aws Glue Spark - Fatal编程技术网

Amazon web services AWS将ETL粘附到红移:日期

Amazon web services AWS将ETL粘附到红移:日期,amazon-web-services,amazon-redshift,aws-glue,aws-glue-spark,Amazon Web Services,Amazon Redshift,Aws Glue,Aws Glue Spark,我正在使用AWS胶水将数据ETL到红移。我遇到了一个问题,我的日期在红移中加载为空 我的设置: 将csv上载到S3,请参见示例数据: 项目|颜色|价格|日期 衬衫|棕色| 25.05 | 03-01-2018 裤子|黑色| 20.99 | 02-14-2017 爬网S3对象 创建红移表,请参见模式: 项目:字符串 颜色:字符串 价格:十进制/数字 日期:日期 脚本要将数据加载到红移,请参见脚本: 任何反馈都将不胜感激。谢谢。我可以通过转换回动态帧来解决此问题。将数据移植到笔记本电脑

我正在使用AWS胶水将数据ETL到红移。我遇到了一个问题,我的日期在红移中加载为空

我的设置:

  • 将csv上载到S3,请参见示例数据:
项目|颜色|价格|日期

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

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

  • 爬网S3对象

  • 创建红移表,请参见模式:

    项目:字符串 颜色:字符串 价格:十进制/数字 日期:日期

  • 脚本要将数据加载到红移,请参见脚本:


任何反馈都将不胜感激。谢谢。

我可以通过转换回动态帧来解决此问题。将数据移植到笔记本电脑时,我使用的是动态框架。但是,要将字符串转换为日期,我必须使用dataframe(更具体地说是PySparkSQL函数)。要加载到红移,我必须转换回dynamicframe。假设这是Glue的要求?

在将数据类型转换为MM/DD/YYYY格式后检查数据类型,让Glue创建一个新的红移表,而不用手动创建

    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()