根据条件执行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'