100 レコードのみを使用してスタンドアロン モードでローカルに実行したこのコード スニペットがあります。
from awsglue.context import GlueContext
glue_context = GlueContext(sc)
glue_df = glue_context.create_dynamic_frame.from_catalog(database=db, table_name=table)
df = glue_df.toDF()
print(df.count())
スキーマには、構造体データ型の配列を持つ 5 つの列を除いて、すべて文字列データ型を持つ 89 個の列が含まれています。データサイズは3.1MB。
また、コードの実行に使用される環境に関する情報は次のとおりです。
- spark.executor.cores: 2
- spark.executor.id: ドライバー
- spark.driver.memory: 1000M
問題は、ステージ 1 が 100 レコードしか数えられないのに、終了するのに 12 分かかった理由がわからないことです。次の図に示すように、"Scan parquet" および "Exchange" タスクの意味がわかりません: ステージ 1 DAG の視覚化
私の質問は、これらのタスクの意味を理解するためのより体系的な方法があるかどうかです。初心者として、私は Spark UI に大きく依存していましたが、実行されたタスクに関する情報はあまり得られません。どのタスクが最も時間がかかったかを見つけることができましたが、その理由とそれを体系的に解決する方法がわかりません。