pyspark to_date convert为无效日期返回null



我正在尝试使用to_date将字符串列转换为日期。一切都很好,然而,我的要求是,如果有任何错误的数据,也就是说,日期的任何格式错误的输入,就不能通过火花作业。目前,to_date返回null,但没有下降。如何确保在这种情况下工作会失败?

to_date函数的行为取决于spark.sql.ansi.enabledSpark选项。当它被禁用(默认(时,Spark使用符合Hive的方言,并返回null结果而不是失败。相反,如果启用,Spark将符合ANSI,并且如果输入格式不正确,则会失败。

也就是说,您可能不想启用spark.sql.ansi.enabled,因为它还有许多其他效果,请参阅此处。

另一种解决方案是使用UDF而不是to_date函数来执行日期解析,并在解析失败时抛出异常。

最新更新