Медианный расчет импалы на больших данных
У меня есть доступ к некоторым данным, это сотни миллионов строк за любой месяц. 3 функции: строка, представляющая дату, строка, представляющая тип, и значение, представляющее сумму.
Имея доступ к python и impala(SQL), как лучше всего рассчитать медиану для этих миллионов строк для каждого типа в каждом месяце?
Если я использую простую группу по: типу и подстроке части даты, чтобы получить месяц, например substring(date,1,4), и использую функцию APPX_MEDIAN для медианы, то у меня просто заканчивается память для запроса Impala.
Если я попытаюсь записать необработанные данные в формате CSV (скажем, с помощью DBeaver), он будет огромен - размер ГБ слишком велик, чтобы поместиться в память виртуальной машины, к которой у меня есть доступ, и удержит CSV, если я попытаюсь выдвинуть его. в кадр данных Python панды.
Я не знаком с шаблонами, которые работают с большими данными, поэтому любые советы будут очень благодарны. Я изо всех сил пытаюсь выполнить простой расчет из-за огромного размера данных.
1 ответ
Вы можете попытаться увеличить объем памяти, который Impala использует для выполнения запроса, указав SET MEM_LIMIT=Xg
где X будет память в ГБ для каждого демона Impala. См. https://impala.apache.org/docs/build/html/topics/impala_mem_limit.html для получения дополнительной информации.