Spark Predicate Push Down, фильтрация и удаление разделов для Azure Data Lake - PullRequest
1 голос
/ 27 сентября 2019

Я читал об искомых предикатах 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 для лазури за все файлы, которые не были необходимы в соответствии с запросом?
...