Я читал об искомых предикатах spark и сокращении разделов, чтобы понять объем прочитанных данных.У меня были следующие сомнения, связанные с тем же
Предположим, у меня есть набор данных со столбцами (Год: Int, SchoolName: String, StudentId: Int, SubjectEnrolled: String) из которых данные, хранящиеся на диске, разделены по годам и SchoolName и сохранены в формате паркета, скажем, в хранилище Azure Data Lake.
1) Если я выпускаю чтение, spark.read (container) .filter (Year =2019, SchoolName = "XYZ"):
- Будет ли действовать сокращение разделов, и будет прочитано только ограниченное количество разделов?
- Будет ли ввод-вывод в хранилище BLOB-объектов, и данные будут загружены в кластер Spark, а затем отфильтрованы, т. Е. Придется ли мне платить лазурью за ввод-вывод всех других данных, которые нам не нужны?
- Если нет, то как файловая система Azure BLOB понимает эти фильтры, поскольку по умолчанию она не запрашивается?
2) Если я выдаю чтение, spark.read (container) .filter (StudentId = 43):
- Будет ли свеча выдвигать фильтр на диск до сих пор и считывать только те данные, которые требуются?Так как я не разбил этим разделом, будет ли он понимать каждую строку и фильтровать по запросу?
- Опять мне придется платить за IO для лазури за все файлы, которые не были необходимы в соответствии с запросом?