使用Bash Script和使用Oozie执行HQL脚本

时间:2015-03-05 19:02:55

标签: shell hive oozie cloudera-cdh

我有一些我需要执行的hql文件,我想知道最好的方法是什么。

现在我们正在使用一个bash / shell脚本循环遍历路径中的所有hql文件并执行“hive -f * .hql”我们使用这种方法遇到的问题是CPU限制了作业数量你可以马上开始。

您认为更好的方法是使用Oozie工作流来提交hql文件吗?

任何其他建议也会有所帮助

2 个答案:

答案 0 :(得分:1)

您可以使用xargsfind一次提交一些,例如一次提交10个文件

find path -maxdepth 1 -name '*.hql' -print0 | xargs -0 -n 10 hive -f

答案 1 :(得分:0)

你可以使用spring框架工作:使用shell脚本调用hql并使用spring bean调用shell脚本

<step id="processing">
            <tasklet transaction-manager="jobRepository-transactionManager">
                <beans:bean class="example.spring.batch.util.ShellScriptTasklet" scope="step">
                    <beans:property name="shellScript" value="${probb.home}/bin/xyz.sh" />
                    <beans:property name="seviority" value="${imr.seviority}" />
                    <beans:list value-type="java.lang.String">
                            <beans:value>${project_properties}</beans:value>
                        </beans:list>
                    </beans:property>
                </beans:bean>
            </tasklet>
            <end on="FAILED" />
            <next on="*" to="next_job_id" />
        </step>
        <step id="next_job_id">
        .....
        </step>