我有一些我需要执行的hql文件,我想知道最好的方法是什么。
现在我们正在使用一个bash / shell脚本循环遍历路径中的所有hql文件并执行“hive -f * .hql”我们使用这种方法遇到的问题是CPU限制了作业数量你可以马上开始。
您认为更好的方法是使用Oozie工作流来提交hql文件吗?
任何其他建议也会有所帮助
答案 0 :(得分:1)
您可以使用xargs
和find
一次提交一些,例如一次提交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>