Я работаю над проектом потокового воспроизведения, в котором входящий поток объединяется с несколькими таблицами Hive.Поэтому я загружаю таблицу в спарк и кеширую ее.
Ниже приведен пример запроса -
val df = sql("select * from (select *, row_number() over (partition by a , b , c, d order by date desc) row_num from test) tmp where tmp.row_num = 1")
Таблица содержит 99% повторяющихся данных, поэтому я использую логику номеров строк, чтобы различить ее.Когда я сделал df.explain(true)
, нет никаких условий при нажатии.Так что вся таблица загружается в память.Таблица содержит миллиарды данных.что дает FAILED_TO_UNCOMPRESS(5)
ошибку.
Должен ли я создать представление Hive, используя вышеупомянутый запрос, и вызвать представление в spark, чтобы оно получало результирующие данные.Я не знаю, работает ли это.
Существует около 10 таблиц, которые разряжаются каждые 15 минут.Все они имеют одинаковую логику номеров строк.Как включить пушдаун?Таким образом, искра может только получить результирующие данные из улья.