Будет ли S3 Select ускорять анализ Spark для файлов Parquet? - PullRequest
1 голос
/ 30 апреля 2019

Вы можете использовать S3 Select с Spark на Amazon EMR и с Databricks , но только для файлов CSV и JSON.Я предполагаю, что S3 Select не предлагается для столбчатых форматов файлов, потому что это не очень поможет.

Допустим, у нас есть озеро данных людей с first_name, last_name и countryстолбцы.

Если данные хранятся в виде файлов CSV, и вы выполняете запрос, подобный peopleDF.select("first_name").distinct().count(), то S3 передаст все данные для всех столбцов в кластер ec2 для выполнения вычисления.Это действительно неэффективно, потому что нам не нужны все данные last_name и country для выполнения этого запроса.

Если данные хранятся в виде CSV-файлов и вы выполняете запрос с помощью S3 select, то S3будет только передавать данные в столбце first_name для выполнения запроса.

spark
  .read
  .format("s3select")
  .schema(...)
  .options(...)
  .load("s3://bucket/filename")
  .select("first_name")
  .distinct()
  .count()

Если данные хранятся в озере данных Parquet и выполняется peopleDF.select("first_name").distinct().count(), то S3 будет передавать только данные встолбец first_name для кластера ec2.Parquet - это столбчатый формат файла, и это одно из основных преимуществ.

Так что, насколько я понимаю, S3 Select не поможет ускорить анализ озера данных Parquet, поскольку столбчатые форматы файлов предлагают S3 Select.Оптимизация из коробки.

Я не уверен, потому что коллега уверен, что я не прав, и потому что S3 Select поддерживает формат файла Parquet .Не могли бы вы подтвердить, что столбчатые форматы файлов обеспечивают основную оптимизацию, предлагаемую S3 Select?

1 Ответ

2 голосов
/ 30 апреля 2019

Это интересный вопрос.У меня нет реальных чисел, хотя я сделал код привязки S3 select в модуле hadoop-aws.Amazon EMR имеет некоторые значения, как и блоки данных.

Для CSV IO Да, S3 Select будет ускоряться при интенсивной фильтрации исходных данных, например, много ГБ данных, но не слишком много назад.Зачем?хотя чтение выполняется медленнее, вы экономите на ограниченной пропускной способности для своей виртуальной машины.

Однако для Parquet рабочие разбивают большой файл на части и планируют работу над ними (при условии, что формат сжатия с разделяемой таблицей, такой как snappy,используется), поэтому> 1 работник может работать с одним файлом.И они читают только часть данных (== преимущества полосы пропускания меньше), но они действительно ищут в этом файле (== нужно оптимизировать политику поиска, иначе стоимость прерывания и повторного открытия HTTP-соединений)

I 'Я не уверен, что чтение Parquet в кластере S3 может превзойти спарк-кластер, если в кластере достаточно емкости, и вы настроили параметры клиента s3 (для s3a это означает: политика поиска, размер пула потоков, размер пула http) для производительноститоже.

Как я и сказал: я не уверен.Номера приветствуются.

...