15

我只是运行一个非常简单的工作如下

glueContext = GlueContext(SparkContext.getOrCreate())
l_table = glueContext.create_dynamic_frame.from_catalog(
             database="gluecatalog",
             table_name="fctable") 
l_table = l_table.drop_fields(['seq','partition_0','partition_1','partition_2','partition_3']).rename_field('tbl_code','table_code')
print "Count: ", l_table.count()
l_table.printSchema()
l_table.select_fields(['trans_time']).toDF().distinct().show()
dfc = l_table.relationalize("table_root", "s3://my-bucket/temp/")
print "Before keys() call "
dfc.keys()
print "After keys() call "
l_table.select_fields('table').printSchema()
dfc.select('table_root_table').toDF().where("id = 1 or id = 2").orderBy(['id','index']).show()
dfc.select('table_root').toDF().where("table = 1 or table = 2").show()

数据结构也很简单

root
|-- table: array
| |-- element: struct
| | |-- trans_time: string
| | |-- seq: null
| | |-- operation: string
| | |-- order_date: string
| | |-- order_code: string
| | |-- tbl_code: string
| | |-- ship_plant_code: string
|-- partition_0
|-- partition_1
|-- partition_2
|-- partition_3

当我运行作业测试时,需要 12 到 16 分钟才能完成。但云观察日志显示,该作业需要 2 秒才能显示我的所有数据。

所以我的问题是:AWS Glue 作业将其时间花在了哪些地方,超出了日志记录可以显示的范围,它在日志记录期间之外做什么?

4

3 回答 3

30

设置允许代码运行的环境需要时间。我遇到了同样的问题,联系了 AWS GLUE 团队,他们很有帮助。需要很长时间的原因是 GLUE 在你运行第一个作业时构建了一个环境(它保持活动 1 小时)如果你在一个小时内运行两次相同的脚本或任何其他脚本,下一个作业将花费更少的时间. 当你运行第一个脚本时,他们称之为冷启动,我的第一份工作花了 17 分钟,我在第一份工作完成后再次运行同样的工作,只用了 3 分钟。

于 2017-10-23T20:03:43.427 回答
10

2019 年 5 月更新——

  • 冷启动时间 = 7-8 分钟

  • 温水池维持 = 10-15 分钟

于 2019-05-20T23:09:55.513 回答
1

执行编辑作业时,您可以在“脚本库和作业参数(可选)”部分下添加更多 DPU。它可以帮助一些人,但不要指望有任何重大改进,我的经验。

于 2017-12-05T23:35:33.740 回答