在粘合作业中,我使用粘合连接从AWS RDS PSQL创建了dynamic_frame,并在完成一些ETL作业后将数据写入S3。之后,我为S3中编写的拼花文件创建并运行Glue Crawler。这是示例代码。
dynamic_frame = glueContext.create_dynamic_frame_from_options('postgresql',
connection_options)
glueContext.write_dynamic_frame.from_options(
frame=cleaned_dynamic_frame,
connection_type="s3",
connection_options={"path": export_path},
format="parquet")
response = glue.create_crawler(
Name=crawler_name,
Role=role,
DatabaseName=db_name,
Targets={
'S3Targets': [
{
'Path': path
}
]
},
TablePrefix='{}_'.format(table_name)
)
### S3 Objects list in the path (20 parquet files)
<bucket>/<path>/part-0000-a.snappy.parquet
<bucket>/<path>/part-0001-b.snappy.parquet
<bucket>/<path>/part-0002-c.snappy.parquet
<bucket>/<path>/part-0003-d.snappy.parquet
<bucket>/<path>/part-0004-e.snappy.parquet
<bucket>/<path>/part-0005-f.snappy.parquet
<bucket>/<path>/part-0006-g.snappy.parquet
<bucket>/<path>/part-0007-h.snappy.parquet
<bucket>/<path>/part-0008-i.snappy.parquet
问题: 胶搜寻器应该为这些镶木地板数据创建一个具有相同架构的表。但是,胶爬行器以某种方式为每个镶木地板数据创建了多个表,并且每个表的位置都为每个镶木地板数据。不合并。这有时会发生..有时会正常工作...
我的猜测是,spark在完成胶水作业之前会向s3创建_temporary文件...并且在存在临时文件的那一刻,胶水搜寻器正在运行,并且会为每个文件创建每个表。
如果您有任何想法,请在下面评论。 谢谢您的大力帮助。