
Комментарии 5
Так имена таблиц остаются захардкоженными, можно пойти дальше, и во всей реализации бизнес-логики использовать pyspark.DataFrame как входные параметры, или дойти до подхода dagster с ассетами и iomanager'ами. Но в целом, контракт на уровне схемы каталога это тоже вариант, со своими плюсами.
Только это все хорошо, а на практике все равно spark.read.parquet - и вперёд... Или, что ещё интереснее, df.write.mode("append").parquet(hive_table_location) из рандомного пайплайна :-).
Тут скорее речь про подключение внешних источников, вроде Oracle/ClickHouse, и тд.
Плюс, мы стараемся не писать пайплайны, что вы привели в пример. Такой код точно не пройдет ревью у наших коллег.
ClickHouse
Вы кстати тоже ходите в него через JDBC который внутри всё в tsv перегоняет?
Недавно у Clickhouse появился Arrow Flight SQL в качестве нового интерфейса, через spark-flight-connector тратится на порядок меньше CPU на десериализацию vs старый JDBC.
Такой код точно не пройдет ревью у наших коллег.
Это хорошо, когда процессы выстроены так, что без ревью код рандомного отдела не залезет в общий даталейк.
Упрощаем Spark через Catalog API