Spark-sql执行sql语句报:Cannot safely cast xxx string to int.

求知探索 1年前 ⋅ 3089 阅读

原因是spark-sql执行sql有三中模式:ANSI, LEGACY, STRICT。

ANSI模式是标准sql,不允许不合理的类型转换,与PostgreSQL相同。

LEGACY模式允许类型强制转换,只要它是有效的'Cast' 这也是Spark 2.x中的唯一行为,它与Hive兼容。

对于STRICT模式 Spark不允许任何可能的精度损失或数据截断。

解决方法:找到spark/conf/spark-defaults.conf 添加:

spark.sql.storeAssignmentPolicy=LEGACY

全部评论: 0

    我有话说: