我的第一个问题!我为日常ETL构建了一个数据管道,它可以在Aurora,Redshift和Hive之间移动和转换数据。一切正常,但我真的坚持尝试实现 Shellcommandprecondition 。目的是检查位于Aurora MySQL上的视图中的总行数。如果视图为空(0行),则应执行数据管道。如果视图中有行 - 那么管道稍稍等待,然后在4次重试后最终失败。
有人可以帮我解决实际检查和查询的代码吗?这是我到目前为止所得到的,但没有运气:
#!/bin/bash
count=`mysql -u USER -pPW -h MASTERPUBLIC -p 3306 -D DBNAME -s -N -e "SELECT count(*) from MyView"`
if $count = 0
then exit 0
else exit 1
fi
在管道定义中,它看起来如下:
{
"retryDelay": "15 Minutes",
"scriptUri": "s3://mybucket/ETLprecondition.bash",
"maximumRetries": "4",
"name": "CheckViewEmpty",
"id": "PreconditionId_pznm2",
"type": "ShellCommandPrecondition"
},
我的编码经验很少,所以我可能完全没有...
答案 0 :(得分:0)
是的,几个小时过去了,我终于解决了。有一些问题阻碍了我。
最终和工作代码是:
#!/bin/bash
if type mysql >/dev/null 2>&1; then
count=`mysql -u USER -pPW -h MASTERPUBLIC -p 3306 -D DBNAME -s -N -e "SELECT count(*) from MyView"`
if [ "$count" -eq "0" ];
then exit 0
else exit 1
fi
else
sudo yum install -y mysql
count=`mysql -u USER -pPW -h MASTERPUBLIC -p 3306 -D DBNAME -s -N -e "SELECT count(*) from MyView"`
if [ "$count" -eq "0" ];
then exit 0
else exit 1
fi
fi