数据湖探索 DLI-Spark2.4.x与Spark3.3.x版本在SQL队列的差异对比:导出CSV文件时保留特殊字符的引号

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

导出 CS V文件时保留特殊字符的引号

  • 说明:
    • Spark2.4.x

      在Spark 2.4.x版本中,导出CSV文件时,如果字段值中包含特殊字符如换行符(\n)和回车符(\r),并且这些特殊字符被引号(例如双引号")包围,Spark会自动处理这些引号,在导出的CSV文件中舍弃这些引号。

      例如,字段值"a\rb"在导出时不会包含引号。

    • Spark3.3.x:

      在Spark 3.3.x版本中,优化了对于CSV文件的导出处理,如果字段值中包含特殊字符,并且这些特殊字符被引号包围,Spark会保留这些引号。

      例如:字段值"a\rb"在导出时,引号仍被保留在最终的CSV文件中。

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

    对查询结果无影响,但导出文件样式有影响。

  • 示例代码:

    准备数据:

    create table test_null2(str1 string,str2 string,str3 string,str4 string);
    insert into test_null2 select "a\rb", null, "1\n2", "ab";

    执行sql:

    SELECT * FROM test_null2;
    • Spark2.4.5
      a b  1 2 ab
    • Spark3.3.1
      a b  1 2 ab

    导出查询结果到obs,查看csv文件内容:

    • Spark2.4.5
      a
      b,"","1
      2",ab
    • Spark3.3.1
      "a
      b",,"1
      2",ab
support.huaweicloud.com/bulletin-dli/dli_bulletin_0015.html