Мы хотим хранить данные вроде:
{"event":"click", "click_url":..., ...},
{"event":"view","view_item":...., ...}
Каждое событие (щелчок / просмотр / загрузка / попадание ....) имеет разные поля.
В настоящее время мы группируем все видысобытий в одних и тех же файлах паркета, в итоге получается 90 полей, чаще всего нулевое время (редкие данные, потому что для события представления все поля click_ * равны нулю).
Поскольку мы планируем добавлять все больше и больше событий, это не масштабируется (я не могу изобразить файл паркета с более чем 128 столбцами!).
Мы уже используем раздел: year=2018/month=8/day=20
, одну таблицу Hive и Apache Spark для запроса.
Какая может быть лучшая архитектура (может быть, разделение по событию со связанной таблицей Hive), чтобы соответствовать этому?