我有一个要求,就是我要从tmap获得min_age和max_age。我想循环这两个输入,即从、min_age、到max_age,并在每个迭代值中将记录插入cassandra表。
例如,min_age是10,max_age是15,然后我想在cassandra表中插入记录作为10、11、12、13、14和15。
我试着想出一个解决办法,但没有成功。tloop组件似乎是最适合的,但不幸的是,tmap没有迭代器连接器。
有人能帮上忙吗。
发布于 2017-06-19 15:42:12
您只需使用tFlowToIterate将输入流行转换为迭代。然后在每个迭代行上添加一个循环,以进一步迭代min/max值。然后,您可以使用tIteratetoFlow将迭代转换回流。
下面是一个测试工作:
这就是我如何设置我的tRowGenerator来尝试模拟您的输入流(如果需要,可以使用多行):
以及循环的组件设置:
以及将迭代转换回流的组件设置:
这是日志输出:
Starting job testjob at 11:35 19/06/2017.
[statistics] connecting to socket on port 3914
[statistics] connected
10
11
12
13
14
15
[statistics] disconnected
Job testjob ended at 11:35 19/06/2017. [exit code=0]
发布于 2017-06-19 15:34:25
你可以有这样一个子工作:[inputflow] --> tFlowToIterate-->tLoop-->tFixedFlowInput--> DBInsert
在tLoop中,只需使用tFlowToIterate构造的globalMap变量来填充"from“和" to”字段(在这些字段中使用ctrl空间查找由tFlowToIterate构造的变量)。在tFixedFlow中,您可以构造要插入的数据:它是tloop:((Integer)globalMap.get("tLoop_1_CURRENT_VALUE"))
的当前值。
https://stackoverflow.com/questions/44634210
复制相似问题