数据湖探索 DLI-Spark2.4.x与Spark3.3.x版本在SQL队列的差异对比:Spark3.3.x不再支持使用“0$”指定第一个参数

时间:2024-12-28 16:25:09

Spark3.3.x不再支持使用“0$”指定第一个参数

  • 说明:

    format_string(strfmt, obj, ...) 和 printf(strfmt, obj, ...) 中的 strfmt 将不再支持使用“0$”指定第一个参数,第一个参数应始终由“1$”引用当使用参数索引来指示参数在参数列表中的位置。

    • Spark2.4.x:%0和%1均可表示第一个参数。
    • Spark3.3.x:不再支持%0。
  • 升级引擎版本后是否对作业有影响:

    有影响,请作业中如涉及使用%0需修改以适配Spark3.3.x

  • 示例代码1

    执行sql:

    SELECT format_string('Hello, %0$s! I\'m %1$s!', 'Alice', 'Lilei');
    • Spark2.4.5
      Hello, Alice! I'm Alice!
    • Spark3.3.1
       DLI .0005: The value of parameter(s) 'strfmt' in `format_string` is invalid: expects %1$, %2$ and so on, but got %0$.
  • 示例代码2

    执行sql:

    SELECT format_string('Hello, %1$s! I\'m %2$s!', 'Alice', 'Lilei');
    • Spark2.4.5
      Hello, Alice! I'm Lilei!
    • Spark3.3.1
      Hello, Alice! I'm Lilei!
support.huaweicloud.com/bulletin-dli/dli_bulletin_0015.html