数据湖探索 DLI-Spark2.4.x与Spark3.3.x版本在SQL队列的差异对比:ADD PARTITION新增支持使用类型化文字

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

ADD PARTITION新增支持使用类型化文字

  • 说明:
    • Spark2.4.x

      在Spark 2.4.x版本中,使用ADD PARTITION时,如果使用类型化文字(例如date'2020-01-01'),分区值会被解析为字符串值date'2020-01-01',会生成一个非法的日期值,因此会添加一个值为null的分区。

      正确的做法是使用字符串值,例如ADD PARTITION(dt = '2020-01-01')

    • Spark3.3.x:在Spark 3.3.x版本中,对分区操作支持使用类型化文字,支持使用ADD PARTITION(dt = date'2020-01-01'),并且可以正确地将分区值解析为日期类型,而不是字符串。
  • 升级引擎版本后是否对作业有影响:

    有影响,ADD PARTITION中对于类型化文字的处理方式的变化。

  • 示例代码

    准备数据:

    create table test_part_type (id int,name string,pt date) PARTITIONED by (pt);
    insert into test_part_type partition (pt = '2021-01-01') select 1,'name1';
    insert into test_part_type partition (pt = date'2021-01-01') select 1,'name1';

    执行sql:

    select id,name,pt from test_part_type;
    (配置参数spark.sql.forcePartitionPredicatesOnPartitionedTable.enabled为false)
    • Spark2.4.5
      1 name1 2021-01-01
      1 name1
    • Spark3.3.1
      1 name1 2021-01-01
      1 name1 2021-01-01
support.huaweicloud.com/bulletin-dli/dli_bulletin_0015.html