Использование Kiba: возможно ли определить и запустить два конвейера в одном файле? Использование промежуточного пункта назначения и второго источника
Моя обработка имеет этап "уплотнения" перед дальнейшей обработкой:
Источник: необработанные журналы событий / аналитики разных пользователей.
Преобразование: вставьте каждую строку в хеш согласно UserID.
Назначение / вывод: хэш в памяти, такой как:
{
"user1" => [event, event,...],
"user2" => [event, event,...]
}
Теперь у меня нет необходимости хранить эти группы пользователей где-либо, я просто хотел бы продолжить их обработку. Есть ли у Кибы общая схема использования промежуточного пункта назначения? Например
# First pass
source EventSource # 10,000 rows of single events
transform {|row| insert_into_user_hash(row)}
@users = Hash.new
destination UserDestination, users: @users
# Second pass
source UserSource, users: @users # 100 rows of grouped events, created in the previous step
transform {|row| analyse_user(row)}
Я копаюсь в коде, и кажется, что все преобразования в файле применяются к источнику, поэтому мне было интересно, как другие люди подошли к этому, если вообще. Я мог бы сохранить в промежуточном хранилище и запустить другой скрипт ETL, но надеялся на более чистый путь - мы планируем множество этих "сжатых" шагов.
1 ответ
Чтобы прямо ответить на ваш вопрос: вы не можете определить 2 конвейера внутри одного файла Kiba. У вас может быть несколько источников или назначений, но все строки будут проходить через каждое преобразование, а также через каждое назначение.
Тем не менее, у вас есть довольно много вариантов, прежде чем прибегнуть к разделению на 2 конвейера, в зависимости от вашего конкретного случая использования.
Я отправлю вам электронное письмо, чтобы задать несколько более подробных вопросов наедине, чтобы правильно ответить здесь позже.