web-dev-qa-db-fra.com

AWS Glue prend beaucoup de temps à terminer

Je viens de faire un travail très simple comme suit

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()

La structure de données est simple aussi

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

Lorsque j’effectue un test d’emploi, cela prend entre 12 et 16 minutes. Mais le journal de surveillance du nuage a montré que le travail prenait 2 secondes pour afficher toutes mes données. 

Mes questions sont donc les suivantes: Où le travail AWS Glue passe-t-il au-delà de la journalisation, et que fait-il en dehors de la période de journalisation?

9
Shawn

C'est prendre le temps de configurer l'environnement qui permet à votre code de s'exécuter. J'ai eu le même problème, j'ai contacté l'équipe AWS GLUE et ils ont été utiles. Cela prend beaucoup de temps parce que GLUE crée un environnement lorsque vous exécutez le premier travail (qui reste actif pendant une heure). Si vous exécutez le même script deux fois ou tout autre script en une heure, le travail suivant prendra beaucoup moins de temps. . Ils appellent ce démarrage à froid lorsque vous exécutez le premier script. Cela a pris 17 minutes à mon premier emploi. J'ai exécuté le même travail à nouveau juste après la fin du premier et cela ne prenait que 3 minutes.

11
Rick Coleman

lorsque vous modifiez un travail, vous pouvez ajouter davantage de DPU dans la section "Bibliothèques de scripts et paramètres de travail (facultatif)". Cela aide certains, mais n’attends aucune amélioration majeure, mon expérience.

0
Jie