数据湖探索 DLI-Spark 2.4.x与Spark 3.3.x版本在SQL队列的差异对比:包含自动生成的别名时创建视图失败

时间:2025-02-12 15:01:58

包含自动生成的别名时创建视图失败

  • 说明:
    • Spark2.4.x:Spark2.4.x版本中如果语句中包含自动生成的别名,则正常执行且无提示信息。
    • Spark3.3.x:Spark3.3.x版本中如果语句中包含自动生成的别名,则创建/更改视图将失败。

      在Spark3.3.x版本中如果希望恢复到Spark2.4.x之前的使用方式,可以通过设置配置项spark.sql.legacy.allowAutoGeneratedAliasForView为true来实现。

  • 升级引擎版本后是否对作业有影响:

    有影响。

  • 示例代码:

    准备数据:

    create table test_view_alis(id1 int,id2 int);INSERT INTO test_view_alis VALUES(1,2);

    执行sql:

    create view view_alis as select id1 + id2 from test_view_alis;
    • Spark 2.4.5

      执行成功

    • Spark 3.3.1
      报错Not allowed to create a permanent view `view_alis` without explicitly assigning an alias for expression (id1 + id2)

      如果在Spark 3.3.1版本添加如下参数后,执行SQL成功。

      spark.sql.legacy.allowAutoGeneratedAliasForView = true
support.huaweicloud.com/bulletin-dli/dli_bulletin_0015.html