根据条件执行python脚本成功/失败

根据条件执行python脚本成功/失败,python,pyspark,Python,Pyspark,我有一个python脚本,我将使用Pyspark执行该脚本。python文件如下所示 #!/usr/bin/env python from datetime import datetime from pyspark import SparkContext, SparkConf from pyspark.sql import HiveContext conf = SparkConf() sc = SparkContext(conf=conf) sqlContext = HiveContext(

我有一个
python
脚本,我将使用
Pyspark
执行该脚本。
python
文件如下所示

#!/usr/bin/env python

from datetime import datetime
from pyspark import SparkContext, SparkConf
from pyspark.sql import HiveContext

conf = SparkConf()
sc = SparkContext(conf=conf)
sqlContext = HiveContext(sc)

df = sqlContext.sql("select id, name, start_date from testing.user_123")

hivedb='test'
table='abc_123'

# Register the Data Frame as a TempTable
df.registerTempTable('mytempTable')

# Create Table in Hive using the temptable
status = 'success'
try:
  sqlContext.sql("create table {}.`{}` as select * from mytempTable".format(hivedb,table))
except:
   status = 'fail'

sc.stop()
我得到了期望的结果。现在,当我在
shell脚本中使用
spark-submit
执行这个
python
文件时,我一直获得
success
的状态

如果状态消息为fail,我希望Python脚本执行失败;如果状态消息为success,我希望Python脚本执行成功


为了获得预期的结果,我需要在脚本中更改哪些内容。

因为
hivedb
table
都是硬编码的,并且
mytentable
已经存在,
“创建表{}.
{}
作为select*from mytentable”
将始终成功,如果找不到任何值,它只会创建一个空表。你需要一个不同的条件来核对;可能是
select
query的长度?

因为
hivedb
table
都是硬编码的,而且
mytentable
已经存在,
创建表{}。
{}
因为select*from mytentable
总是会成功,如果找不到任何值,它只会创建一个空表。你需要一个不同的条件来核对;也许您的
select
查询的长度?

只需在python脚本的末尾添加一条assert语句。如果状态变量值不是“success”,则python脚本将失败

assert status == 'success', 'status should be success'

只需在python脚本的末尾添加一个assert语句。如果状态变量值不是“success”,则python脚本将失败

assert status == 'success', 'status should be success'