【发布时间】:2016-04-20 05:09:25
【问题描述】:
每当我作为 Hive UDF 的 python 因异常而失败时,我都会尝试彻底退出程序。
这是一个例子:
SELECT TRANSFORM (id, name) 使用 'D:\Python27\python.exe streaming.py' AS(id 字符串, name string, count integer) FROM hivesampletable;
#streaming.py
import sys
from datetime import datetime
try:
for line in sys.stdin.readlines():
fields = line.strip().split('\t')
fields.append(len(name))
print "\t".join(fields)
except:
#I want program to break/clean exit with out printing (writing back) to table
赞赏的想法
【问题讨论】:
-
您在寻找
pass声明 -
谢谢,能详细说明一下吗?
-
pass语句让等效于 NOP 或什么都不做。它的一个流行应用是在您想要忽略某种异常的 except 块中。在捕获异常时不明确声明异常不是最佳做法,但pass会让您在不中断的情况下静默恢复控制流。 -
但是我想要一个带有退出代码的干净退出程序,可以通过帮助我做到这一点吗?
-
我不是你遇到的例外来自python。如果是,
pass将帮助您做到这一点。我不是 Hive 专家,但是查询的 TRANSFORM 部分和列部分是否必须具有相同数量的列?