如何实现HiveQL错误处理

Pra*_*ala 3 hadoop hive hiveql

我在一个hql文件中有多个查询(例如10,每个查询以;结尾),该文件是从Shell脚本运行的。

当两次查询之间的查询失败时(例如查询5),将不执行5之后的查询,并且配置单元作业将完成。

我如何执行错误处理以确保即使查询5失败也可以运行6到10个查询?

Dav*_*itz 5

演示版

myscript.sql

select 1;
select assert_true(false);
select 2;
Run Code Online (Sandbox Code Playgroud)

选项1

hive --hiveconf hive.cli.errors.ignore=true -f myscript.sql 
Run Code Online (Sandbox Code Playgroud)
OK
1
Time taken: 3.742 seconds, Fetched: 1 row(s)
OK
Failed with exception java.io.IOException:org.apache.hadoop.hive.ql.metadata.HiveException: ASSERT_TRUE(): assertion failed.
Time taken: 0.264 seconds
OK
2
Time taken: 0.284 seconds, Fetched: 1 row(s)
Run Code Online (Sandbox Code Playgroud)

选项2

hive<myscript.sql 
Run Code Online (Sandbox Code Playgroud)
hive> select 1;
OK
1
Time taken: 3.181 seconds, Fetched: 1 row(s)
hive> select assert_true(false);
OK
Failed with exception java.io.IOException:org.apache.hadoop.hive.ql.metadata.HiveException: ASSERT_TRUE(): assertion failed.
Time taken: 0.335 seconds
hive> select 2;
OK
2
Time taken: 0.225 seconds, Fetched: 1 row(s)
Run Code Online (Sandbox Code Playgroud)