Производительность считывания Spark S3

#sql #amazon-web-services #performance #apache-spark #amazon-s3

Вопрос:

Я тестирую различные варианты для нажимных фильтров и операций чтения. Я использую среду ноутбуков AWS EMR и pyspark. Геопространственные данные разделены на разные уровни квадроключей. Я делаю следующие запросы:

 df = spark.read.parquet("s3://some_data") df.where("""qk12 like '02313012%'""").count() //1 df.where("""qk8 = '02313012'""").count() //2  

Я сделал несколько пробежек в цикле:

  1. 20 сек 5 сек 4 сек 19 сек 6 сек
  2. 18 сек 6 сек 5 сек 5 сек 7 сек

Я заметил, что иногда для выполнения запроса требуется ~20 секунд, а иногда ~5 секунд. На данный момент у меня есть 2 вопроса:

  1. почему иногда это занимает гораздо больше времени, чем другие запуски (без кэширования на моей стороне, если есть какой-либо эффект разогрева на стороне AWS S3?)
  2. каков наилучший способ измерения производительности запросов spark sql?