Pyspark AWS Glue-GlueContext:从S3读取分区数据,将分区添加为DynamicFrame的列

Pyspark AWS Glue-GlueContext:从S3读取分区数据,将分区添加为DynamicFrame的列,pyspark,aws-glue,Pyspark,Aws Glue,我有一些数据存储在拼花地板格式的S3存储桶中,遵循类似蜂巢的分区方式,带有以下分区键:零售商-年-月-日。 乙二醇 我想在sagemaker笔记本中读取所有这些数据,我想将分区作为我的DynamicFrame的列,这样当我df.printSchema()时,它们就会被包括在内 如果我使用Glue建议的方法,分区就不会包含在我的模式中。以下是我使用的代码: df=glueContext.create\u dynamic\u frame.from\u选项( 连接类型为's3', 连接选项={ “路径

我有一些数据存储在拼花地板格式的S3存储桶中,遵循类似蜂巢的分区方式,带有以下分区键:零售商-年-月-日。

乙二醇

我想在sagemaker笔记本中读取所有这些数据,我想将分区作为我的DynamicFrame的列,这样当我
df.printSchema()
时,它们就会被包括在内

如果我使用Glue建议的方法,分区就不会包含在我的模式中。以下是我使用的代码:

df=glueContext.create\u dynamic\u frame.from\u选项(
连接类型为's3',
连接选项={
“路径”:[“s3://my bucket/”],
“分区键”:[
“零售商”,
“年”,
“月”,
“一天”
]
},
拼花地板
)
取而代之的是,通过使用普通的spark代码和DataFrame类,它可以工作,并且分区包含在我的模式中:

df=spark.read.parquet('s3://my bucket/')


我想知道是否有一种方法可以使用AWS Glue的特定方法来实现这一点。

也许你可以尝试抓取数据,并使用“从目录”选项读取数据。尽管我认为您不需要提及分区键,因为它应该看到=意味着它是一个分区。特别是考虑到glue只是spark的一个包装

也许你可以尝试抓取数据并使用from_catalog选项读取数据。尽管我认为您不需要提及分区键,因为它应该看到=意味着它是一个分区。特别是考虑到glue只是spark的一个包装

我后来在没有提及分区和没有提及分区的情况下都尝试过,但它没有任何区别。我最终只使用了spark.read,这是一个一次性操作,所以不需要太复杂。我只是好奇Glue是否能处理这个问题。后来我尝试了不提及分区和不提及分区的两种方法,但没有任何区别。我最终只使用了spark.read,这是一个一次性操作,所以不需要太复杂。我只是好奇Glue是否能处理这个案子。
my-bucket/
   retailer=a/
         year=2020/
         ....
   retailer=b/
         year=2020/
            month=2/
         ...