В нашем проекте мы используем один ETL
каркас (встроенный PySpark
), который принимает Spark-sql
операторы для преобразования данных из источника и загрузки Hive
внешних таблиц.
Теперь у меня есть требование прочитать таблицу, а затем выбрать уникальные значения одного столбца и затем динамически создать таблицу Hive с таким количеством столбцов.
Для примера рассмотрите таблицы ниже.
День 1:
qstn_mstr:
prsnid | qstn
1 | satisfactory
2 | survey
3 | review
Структура целевой таблицы:
prsnid | satisfactory | survey | review
В день 1: в приведенном выше примере есть 3
уникальные значения в столбце qstns
и, следовательно, выходная таблица создается с этими 3
значениями в виде столбцов.
В День 2: Скажи нет. уникальных значений в столбце qstn
в таблице Qstn_mster
изменяется на 5 (может увеличиваться или уменьшаться), что, в свою очередь, влияет на номер столбцов в целевой таблице, которые теперь должны содержать 5
столбцов.
День 2:
qstn_mstr:
prsnid | qstn
1 | satisfactory
2 | survey
3 | review
4 | validity
5 | vote
Структура целевой таблицы:
prsnid | satisfactory | survey | review | validity | vote
Следовательно, каждый день структура целевой таблицы будет динамически меняться.
Как лучше всего спроектировать / смоделировать такое требование в среде PySpark с таблицами Hive?
Пожалуйста, поделитесь своими мыслями.