如何处理 Spark SQL 上的 AnalysisException?
How to handle an AnalysisException on Spark SQL?
我正在尝试在 Spark 中执行查询列表,但如果查询不正确 运行,Spark 会抛出以下错误:
AnalysisException: "ALTER TABLE CHANGE COLUMN 不支持更改 ...
这是我的代码的一部分(我在 Databricks 上使用 python 和 Spark SQL):
for index, row in df_tables.iterrows():
query = row["query"]
print ("Executing query: ")
try:
spark.sql(query)
print ("Query executed")
except (ValueError, RuntimeError, TypeError, NameError):
print("Unable to process your query dude!!")
else:
#do another thing
有什么办法可以捕捉到这个异常吗? ValueError、RuntimeError、TypeError、NameError 似乎不起作用。
在 Spark 网页上没有那么多相关信息。
您可以修改 try except 语句如下:
try:
spark.sql(query)
print ("Query executed")
except Exception as x:
print("Unable to process your query dude!!" + \
"\n" + "ERROR : " + str(x))
我想这取决于你的要求。如果您 运行 此查询的完整工作流程并且您希望它们通过,那么您的代码将正常工作。但是假设您希望您的工作流或数据管道失败,那么您应该退出那个 except
块。
您可能无法获得确切的例外情况,但您绝对可以使用
获得概览
except Exception as x:
print(str(x))
您可以使用日志记录模块将更多信息放入日志中以供进一步调查。
我发现 pyspark.sql.utils 中定义了 AnalysisException。
https://spark.apache.org/docs/3.0.1/api/python/_modules/pyspark/sql/utils.html
import pyspark.sql.utils
try:
spark.sql(query)
print ("Query executed")
except pyspark.sql.utils.AnalysisException:
print("Unable to process your query dude!!")
我正在尝试在 Spark 中执行查询列表,但如果查询不正确 运行,Spark 会抛出以下错误: AnalysisException: "ALTER TABLE CHANGE COLUMN 不支持更改 ...
这是我的代码的一部分(我在 Databricks 上使用 python 和 Spark SQL):
for index, row in df_tables.iterrows():
query = row["query"]
print ("Executing query: ")
try:
spark.sql(query)
print ("Query executed")
except (ValueError, RuntimeError, TypeError, NameError):
print("Unable to process your query dude!!")
else:
#do another thing
有什么办法可以捕捉到这个异常吗? ValueError、RuntimeError、TypeError、NameError 似乎不起作用。 在 Spark 网页上没有那么多相关信息。
您可以修改 try except 语句如下:
try:
spark.sql(query)
print ("Query executed")
except Exception as x:
print("Unable to process your query dude!!" + \
"\n" + "ERROR : " + str(x))
我想这取决于你的要求。如果您 运行 此查询的完整工作流程并且您希望它们通过,那么您的代码将正常工作。但是假设您希望您的工作流或数据管道失败,那么您应该退出那个 except
块。
您可能无法获得确切的例外情况,但您绝对可以使用
获得概览except Exception as x:
print(str(x))
您可以使用日志记录模块将更多信息放入日志中以供进一步调查。
我发现 pyspark.sql.utils 中定义了 AnalysisException。 https://spark.apache.org/docs/3.0.1/api/python/_modules/pyspark/sql/utils.html
import pyspark.sql.utils
try:
spark.sql(query)
print ("Query executed")
except pyspark.sql.utils.AnalysisException:
print("Unable to process your query dude!!")