Amazon s3 如何在AWS Glue脚本中将数据写入S3时添加不在动态框架中的分区

Amazon s3 如何在AWS Glue脚本中将数据写入S3时添加不在动态框架中的分区,amazon-s3,aws-glue,Amazon S3,Aws Glue,在使用DynamicFrame将数据写入S3时,我希望使用不在DynamicFrame中的分区列 例如: def write_date(outpath,year): glue_context.write_dynamic_frame.from_options( frame = projectedEvents, connection_type = "s3", connection_options = {"p

在使用DynamicFrame将数据写入S3时,我希望使用不在DynamicFrame中的分区列

例如:

def write_date(outpath,year):
    glue_context.write_dynamic_frame.from_options(
        frame = projectedEvents,
        connection_type = "s3",    
        connection_options = {"path": outpath, "partitionKeys": [year]},
        format = "parquet")
这里年份是动态框架中不存在的参数

此代码失败,出现错误: '在架构中找不到分区列“2021”

如何使用自己的分区在S3中写入数据

基本上,我想在S3路径中写为“outpath/2021/”

这样可以:

projectedEvents = projectedEvents.withColumn('year', lit(2021))

def write_date(frame,outpath,year):
    glue_context.write_dynamic_frame.from_options(
        frame = frame,
        connection_type = "s3",    
        connection_options = {"path": outpath, "partitionKeys":[year]},
        format = "parquet")

write_date(projectedEvents, outpath, 'year')

我建议您再看看分区。它必须是数据框的一列。

Hi Robert,实际上年份是这个写函数的一个参数Hi,正如错误所说,数据框中可能没有名为2021的列。如何调用此函数以及数据框的外观如何?是的,2021不是数据框中的列presnt。这就是我想做的——我想添加一个数据框架中不存在的分区列。我更新了我的答案。我希望这就是你想要的。