web-dev-qa-db-ja.com

AWS Glueの終了に時間がかかる

私は次のように非常に単純なジョブを実行します

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秒かかったことを示しました。

したがって、私の質問は次のとおりです。AWSGlueジョブは、ロギングが示すことができる範囲を超えてどこで時間を費やしており、ロギング期間外で何をしているのですか?

12
Shawn

コードを実行できる環境をセットアップするのに時間がかかっています。同じ問題が発生しました。AWSGLUEチームに連絡したところ、役に立ちました。長い時間がかかる理由は、最初のジョブ(1時間存続)を実行するときにGLUEが環境を構築するためです。同じスクリプトを2回または他のスクリプトを1時間以内に実行すると、次のジョブにかかる時間が大幅に短縮されます。 。最初のスクリプトを実行すると、コールドスタートと呼ばれます。最初のジョブは17分かかりました。最初のジョブが完了した直後に同じジョブを再度実行したところ、3分しかかかりませんでした。

20
Rick Coleman

2019年5月現在の更新-

  • コールドスタート時間= 7〜8分

  • ウォームプールは10〜15分間維持されます

3
bigdatamann

ジョブを編集するアクションを実行するときに、[スクリプトライブラリとジョブパラメーター(オプション)]セクションでさらにDPUを追加できます。私の経験では、それは一部には役立ちますが、大きな改善は期待できません。

1
Jie