我有一些数据以 parquet 格式存储在一个S3桶中,遵循类似于Hive的分区方式,分区键如下:retailer - year - month - day。
Eg
my-bucket/
retailer=a/
year=2020/
....
retailer=b/
year=2020/
month=2/
...
字符串
我想在一个sagemaker笔记本中读取所有这些数据,我想把这些分区作为DynamicFrame的列,这样当我df.printSchema()
时,它们就包括在内了。
如果我使用Glue建议的方法,分区就不会包含在我的架构中。
df = glueContext.create_dynamic_frame.from_options(
connection_type='s3',
connection_options={
'paths': ['s3://my-bucket/'],
"partitionKeys": [
"retailer",
"year",
"month",
"day"
]
},
format='parquet'
)
型
通过使用普通的spark代码和DataFrame类,它可以正常工作,并且分区包含在我的模式中:df = spark.read.parquet('s3://my-bucket/')
的值。“
我想知道是否有办法做到这一点与AWS胶水的具体方法或没有。
2条答案
按热度按时间exdqitrt1#
也许你可以尝试抓取数据并使用from_catalog选项读取它。尽管我认为你不需要提到分区键,因为它应该看到=意味着它是一个分区。特别是考虑到glue只是spark的 Package 器
krugob8w2#
假设由于作业书签提供的优势,您试图将数据读取为DynamicFrame,以下是一个可能的解决方法:
1.使用Athena作为数据源,分区通过Glue Crawlers显示为列
1.将其与DynamicFrame连接到同一个表以检索分区列。