我的处理有一个"浓缩"在需要进一步处理之前的步骤:
来源:各种用户的原始事件/分析日志。
转换:根据UserID将每一行插入到哈希中。
目标/输出:内存中的哈希,如:
{
"user1" => [event, event,...],
"user2" => [event, event,...]
}
现在,我没有必要将这些用户组存储在任何地方,我只是想继续处理它们。 Kiba是否有使用中间目的地的共同模式?例如。
# 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脚本,但希望有一个更清洁的方式 - 我们正在计划很多这些"浓缩"脚步。
答案 0 :(得分:0)
直接回答您的问题:您无法在同一个Kiba文件中定义2个管道。您可以拥有多个源或目标,但这些行都将遍历每个转换,并通过每个目标。
根据您的具体使用案例,这说您在分成2个管道之前有很多选择。
我打算通过电子邮件向您提出一些非常详细的问题,以便稍后在这里正确回复。