Amazon web services AWS将ETL粘附到红移:日期
我正在使用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对象 创建红移表,请参见模式: 项目:字符串 颜色:字符串 价格:十进制/数字 日期:日期 脚本要将数据加载到红移,请参见脚本: 任何反馈都将不胜感激。谢谢。我可以通过转换回动态帧来解决此问题。将数据移植到笔记本电脑
- 将csv上载到S3,请参见示例数据:
- 爬网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()