Вы можете использовать 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?