Важно помнить, что компоненты TFX интуитивно основаны на функциях Beam. Несмотря на простоту отправки заданий в Beam, я думаю, было бы здорово отправлять задания непосредственно в Spark или Flink, которые в сто раз быстрее, чем пользовательские компоненты TFX.

Я действительно восхищаюсь великими разработчиками TFX, которые упростили нам создание наших пользовательских компонентов. Я рекомендую вам прочитать TFX, чтобы понять, как написать свою пользовательскую функцию. Однако если вы хотите отправить свою функцию предварительной обработки в кластер Spark, вот пример. Это слишком быстрее, чем компонент Трансформация TFX.

Этот компонент определяет три типа артефактов и параметров. Во-первых, преобразованные данные и модели предварительной обработки можно сохранить с помощью transformed_examples и transformed_models. Во-вторых, вы можете указать файл, содержащий функцию предварительной обработки, с помощью параметра moudle_file. Наконец, num_shards определяет, сколько сегментов ваших данных может храниться в распределенной среде.

Кроме того, этот модуль позволяет нам читать и записывать кадры данных в формате TFRecord, который более совместим со всеми конвейерами Tensroflow. Остальной код прост.

Вот пример функции предварительной обработки. Вы можете использовать любые преобразования Spark для разработки функций вашего фрейма данных.

Я надеюсь, что это упростит вам использование конвейеров TFX в вашем кластере Spark без Apache Beam.

С наилучшими пожеланиями✌️