是否可以同时多次同时运行水壶作业?
我正在尝试
假设我们同时运行此脚本两次,
sh kitchen.sh -rep="development" -dir="job_directory" -job="job1"
如果我在某个时间点只运行一次,那么数据流就完全正常了。
但是,当我同时运行此命令两次时,它会抛出错误,如:
ERROR 09-01 13:34:13,295 - job1 - Error in step, asking everyone to stop because of:
ERROR 09-01 13:34:13,295 - job1 - org.pentaho.di.core.exception.KettleException:
java.lang.Exception: Return code 1 received from statement : mkfifo /tmp/fiforeg
Return code 1 received from statement : mkfifo /tmp/fiforeg
at org.pentaho.di.trans.steps.mysqlbulkloader.MySQLBulkLoader.execute(MySQLBulkLoader.java:140)
at org.pentaho.di.trans.steps.mysqlbulkloader.MySQLBulkLoader.processRow(MySQLBulkLoader.java:267)
at org.pentaho.di.trans.step.RunThread.run(RunThread.java:50)
at java.lang.Thread.run(Thread.java:679)
Caused by: java.lang.Exception: Return code 1 received from statement : mkfifo /tmp/fiforeg
at org.pentaho.di.trans.steps.mysqlbulkloader.MySQLBulkLoader.execute(MySQLBulkLoader.java:95)
... 3 more
同时两次同时运行作业非常重要。为了实现这一点,我可以复制每个作业并在某个时间点运行原始作业和重复作业。但是,从长远来看,这不是一个好方法!
的问题: 的
Pentaho没有保持线程吗?
我错过了一些选项,还是可以启用一些选项让pentaho为不同的作业实例创建不同的线程?
答案 0 :(得分:3)
当然,水壶保持着线索。事实上,他们中的很多人。看起来问题是MySQL批量加载器使用FIFO。您有两个名为/ tmp / fiforeg的FIFO实例。运行的第一个实例创建FIFO就好了;第二个然后尝试创建另一个具有相同名称的实例,这会导致错误。
在作业开始时,您需要为该实例生成唯一的FIFO名称。我认为您可以通过在作业开始时添加转换来执行此操作,该转换使用Generate random value
步骤生成随机字符串甚至UUID并通过Set variables
将其存储在作业中的变量中步骤
然后你可以在MySQL批量加载器的'Fifo文件'字段中使用这个变量。
希望对你有用。我不使用MySQL,所以我无法确定。