如何通过automic以互斥的方式选择文件?

问题描述 投票:0回答:1

我们在很短的时间内从大型机接收到两个不同的文件。我们无法预测文件的到达顺序。这些文件应由两个不同的工作流程选择。但它应该以相互排斥的方式触发。换句话说,如果一个工作流正在运行,则其他工作流必须等待先前的工作流。

hadoop hive automic
1个回答
0
投票

这可以实现在公共位置设置一些标志。并且每个作业都应该访问该位置,如果设置了该标志,则等待该标志被取消。

基于以上语句,我在执行任何一个工作流之前在特定位置的unix服务器上创建了一个文件。如果该文件存在,任何工作流都会在特定位置查看该文件,然后等待该文件被之前已启动的先前作业删除。

要创建文件并等待下面的文件删除,请使用unix脚本。可以在“预处理”选项卡中的工作流的第一个作业中定义。

#!/bin/bash
while true
do
        files=$(ls /u/users/lock 2> /dev/null | wc -l)
        if [ "$files" != "0" ]
        then
              echo "Other <workFlow name> is running wait for 10 second"
                sleep 10
        else
              echo "<workFlow name > is not running so <current workflow name> is starting"
              touch /u/users/lock
              exit 0
        fi
done

要在下面的工作流结束时删除文件,请使用unix脚本。必须在最后一个作业进程选项卡中定义此脚本。

#!/bin/bash
echo "<current workFlow name> is finshed so releasing the lock"
files=$(ls /u/users/lock 2> /dev/null | wc -l)
if [ "$files" != "0" ]
then
  rm /u/users/lock
fi
© www.soinside.com 2019 - 2024. All rights reserved.