После недавнего обновления до HDP 3.1
, теперь использующего spark 2.3.x
вместо 2.2.x
, запрос типа:
spark.sql("SELECT * from mydb.mytable").filter('partition_date between "202001010000" and "202001020000").write.parquet("foo.out")
иногда завершается неудачно при чтении из таблицы кустов с поддержкой HDFS (нет хранилища объектов ). Вы должны знать, что базовые данные (ВНЕШНЯЯ таблица в Hive) имеют период хранения данных, и любые данные, которые старше этой даты, будут удалены. Иногда это удаление может происходить во время выполнения вышеупомянутого запроса. Удаление происходит каждые 5 минут.
Даже если:
PartitionFilters: [isnotnull(partition_date#3099), (partition_date#3099 >= 202001010000), (partition_date#3099 <= 202001020000)]
фильтрация разделов (предикатное нажатие), кажется, включена больше, чем желаемые разделы читаются во время начального обхода пути. После обновления до 2.3 Spark отображает в пользовательском интерфейсе ход создания списка файловых каталогов. Интересно, что мы всегда получаем две записи. Один для самого старого доступного каталога и один для нижней из двух интересующих границ:
Listing leaf files and directories for 380 paths:
/path/to/files/on/hdfs/mydb.db/mytable/partition_date==202001010000/sub_part=0, ...
Listing leaf files and directories for 7100 paths:
/path/to/files/on/hdfs/mydb.db/mytable/partition_date=201912301300/sub_part=0, ...
Примечание: