Pyspark AWS Glue-GlueContext:从S3读取分区数据,将分区添加为DynamicFrame的列
我有一些数据存储在拼花地板格式的S3存储桶中,遵循类似蜂巢的分区方式,带有以下分区键:零售商-年-月-日。 乙二醇 我想在sagemaker笔记本中读取所有这些数据,我想将分区作为我的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', 连接选项={ “路径
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/
...