云服务器内容精选
-
默认情况下空的input split不创建partition 说明: Spark2.4.x:默认情况下空的input split将创建partition。 Spark3.3.x:默认情况下空的input split不创建partition。 Spark3.3.x时spark.hadoopRDD.ignoreEmptySplits=true。 升级引擎版本后是否对作业有影响: 有影响,需要判断是否使用分区名做业务判断。
-
Spark3.3.x不再支持将Apache Mesos作为资源管理器 说明: Spark2.4.x:Spark 2.4.x版本中使用Apache Mesos作为资源管理器。 Spark3.3.x:Spark3.3.x不再支持将Apache Mesos作为资源管理器。 升级引擎版本后是否对作业有影响: 功能增强,Spark 2.4.x版本中使用Mesos作为资源管理器,升级到Spark 3.3.x后,你需要考虑切换到其他资源管理器。
-
以command命名DataFrameWriter触发的查询 在Spark 3.2.x版本中,当DataFrameWriter触发的查询执行被发送给QueryExecutionListener时,这些查询的名称总是被设置为command。而在Spark 3.1及更早版本中,这些查询的名称可能是save、insertInto或saveAsTable之一,这取决于具体的操作。 说明: DataFrameWriter触发的查询执行在发送到QueryExecutionListener时,始终以command命名 Spark2.4.x:名称为save、insertInto、saveAsTable中的一个 Spark3.3.x:command命名 升级引擎版本后是否对作业有影响: 有影响
-
Spark将不可为null的模式转换为可空 说明: 在Spark 2.4.x版本中,当用户指定的schema包含不可为空的字段时,Spark会将这些不可为null的模式转换为可空的。 但是在Spark 3.3.x版本中,Spark尊重用户指定的schema中的nullability,即如果字段被定义为不可为空,Spark会保持该配置要求,不会自动转换为可空的字段。 Spark2.4.x:在Spark 2.4.x版本中,当用户指定的schema包含不可为空的字段时,Spark会将这些不可为null的模式转换为可空的。 Spark3.3.x:Spark不会自动转换为可空的字段。 如果希望在Spark 3.3.x版本中恢复到Spark 2.4.x版本的执行方式,您可以通过将 spark.sql.legacy.respectNullabilityInTextDatasetConversion设置为true来实现。 升级引擎版本后是否对作业有影响: 有影响。 示例代码: 执行sql: spark.read.schema(StructType( StructField("f1", LongType, nullable = false) :: StructField("f2", LongType, nullable = false) :: Nil) ).option("mode", "DROPMALFORMED").json(Seq("""{"f1": 1}""").toDS).show(false); Spark 2.4.5 |f1 |f2 | +---+---+ |1 |0 | Spark 3.3.1 |f1 |f2 | +---+----+ |1 |null|
-
PySpark-PyArrow支持版本变更 说明: Spark2.4.x:在Spark 2.4.x版本中,PySpark并没有要求指定PyArrow的版本。 Spark3.3.x:从Spark 3.3.x版本开始,PySpark需要0.12.1或更高版本的PyArrow才能使用PyArrow相关功能,如Pandas_udf、toPandas等。 升级引擎版本后是否对作业有影响: 依赖版本变化,有影响,需要排查是否涉及。
-
Spark3.3.x不支持v1表 说明: Spark2.4.x支持datasourcev1、datasourcev2表。Spark3.3.x不支持v1表。 具体说明请参考 DLI datasourceV1表和datasourceV2表。 Spark2.4.x:支持datasourcev1、datasourcev2表。 Spark3.3.x:不支持支持datasourcev1表。 升级引擎版本后是否对作业有影响: 有影响,建议在Spark 2.4.5版本整改到v2表后再升级Spark 3.3.1,具体操作指导可以参考DLI datasourceV1表和datasourceV2表的中的示例。
-
eventlog的压缩格式设置为zstd 说明: Spark3.3.x版本中,spark.eventLog.compression.codec的默认值被设置为zstd,Spark在压缩事件日志时将不再支持使用spark.io.compression.codec的参数值。 Spark2.4.x:使用spark.io.compression.codec的参数值作为eventlog的压缩格式。 Spark3.3.x:spark.eventLog.compression.codec默认设置为zstd。 升级引擎版本后是否对作业有影响: 有影响,eventlog的压缩格式发生变化。
-
PySpark-pandas支持版本变更 说明: Spark2.4.x:在Spark 2.4.x版本中,PySpark并没有要求指定Pandas的版本。 Spark3.3.x:从Spark 3.3.x版本开始,PySpark需要0.23.2或更高版本的pandas才能使用pandas相关功能,如toPandas、 createDataFrame from pandas DataFrame等。 升级引擎版本后是否对作业有影响: 依赖版本变化,有影响,需要排查是否涉及。
-
新增支持Parallel Multi-Insert 说明: Spark3.3.x版本中新增支持Parallel Multi-Insert,如果SQL存在multi-insert的场景,在同一个SQL里插入到多个表中,这类SQL在Spark开源本身是串行处理的,性能受到制约。针对这类SQL,Spark3.3.x版本中DLI新增支持multi-insert并行化的优化处理,可以让所有的insert都并发执行,提升处理性能。 在使用时需配置开启以下功能开关(默认关闭): spark.sql.lazyExecutionForDDL.enabled=true spark.sql.parallelMultiInsert.enabled=true 升级引擎版本后是否对作业有影响: DLI功能增强,增强multi-insert并行化特性,提升作业运行的可靠性。
-
新增支持Enhance Reuse Exchange 说明: Spark3.3.x版本中新增支持Enhance Reuse Exchange,SQL的对应plan存在sort merge join可重用的条件,通过打开相应开关spark.sql.execution.enhanceReuseExchange.enabled,可以实现SMJ plan node重用。 在使用时需配置开启以下功能开关(默认关闭): spark.sql.execution.enhanceReuseExchange.enabled=true 升级引擎版本后是否对作业有影响: DLI功能增强。
-
导出 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; Spark 2.4.5 a b 1 2 ab Spark 3.3.1 a b 1 2 ab 导出查询结果到obs,查看csv文件内容: Spark 2.4.5 a b,"","1 2",ab Spark 3.3.1 "a b",,"1 2",ab
-
新增支持自适应Skip partial agg功能的配置 说明: Spark3.3.x版本中新增支持自适应Skip partial agg功能,即当Partial Agg效果不佳时,可以直接跳过,避免Partial Agg带来的额外性能消耗。相关参数: spark.sql.aggregate.adaptivePartialAggregationEnabled:用于控制是否启用自适应Skip partial agg功能。当设置为true时,Spark会根据运行时的统计数据动态决定是否跳过部分聚合。 spark.sql.aggregate.adaptivePartialAggregationInterval:该参数用于配置分析间隔,即在处理了多少行数据之后,Spark会进行一次分析,用来决定是否需要跳过部分聚合。 spark.sql.aggregate.adaptivePartialAggregationRatio:该参数是判断是否跳过的阈值,用于判断“已处理的group分组/已处理的行数”的比例。如果这个比例大于配置的阈值,则认为预聚合效果不好,此时Spark可以选择跳过部分聚合,避免进一步的性能损失。 在使用时系统先按照spark.sql.aggregate.adaptivePartialAggregationInterval配置的间隔进行分析,当处理的行数到达间隔之后,再计算”已处理的group分组/已处理的行数”,如果比例大于配置的阈值,则认为预聚合效果不好,此时可以直接选择跳过。 升级引擎版本后是否对作业有影响: DLI功能增强。
-
unix_timestamp函数差异 说明: 对于Asia/Shanghai时区,小于1900-01-01 08:05:43的值。 Spark2.4.x: 以Asia/Shanghai时区的 1900-01-01 00:00:00 为例,返回值为 -2209017600。 Spark3.3.x: 以Asia/Shanghai时区的 1900-01-01 00:00:00 为例,返回值为 -2209017943。 升级引擎版本后是否对作业有影响: 有影响,需要检查使用该函数的场景。 示例代码: 在SQL界面配置: spark.sql.session.timeZone=Asia/Shanghai Spark 2.4.5 执行SQL读取数据: select unix_timestamp('1900-01-01 00:00:00'); 查询结果: -2209017600 Spark 3.3.1 执行SQL读取数据: select unix_timestamp('1900-01-01 00:00:00'); 查询结果 -2209017943
-
from_unixtime函数差异 说明: Spark2.4.x: 以Asia/Shanghai时区的 -2209017600 为例,返回值为1900-01-01 00:00:00。 Spark3.3.x: 以Asia/Shanghai时区的 -2209017943 为例,返回值为 1900-01-01 00:00:00。 升级引擎版本后是否对作业有影响: 有影响,需要检查使用该函数的场景。 示例代码: 在SQL界面配置: spark.sql.session.timeZone=Asia/Shanghai Spark 2.4.5 执行SQL读取数据: select from_unixtime(-2209017600); 查询结果: 1900-01-01 00:00:00 Spark 3.3.1 执行SQL读取数据: select from_unixtime(-2209017600); 查询结果 1900-01-01 00:05:43
-
TIMESTAMP类型字段读取差异 说明: TIMESTAMP类型字段读取差异,对于Asia/Shanghai时区,时间在1900-01-01 08:05:43之前的值,Spark 2.4.5版本写入后Spark 3.3.1版本读取值与Spark 2.4.5版本读取值不同。 Spark2.4.x: 以Asia/Shanghai时区的 1900-01-01 00:00:00 为例,通过Spark 2.4.5版本队列写入,Spark 2.4.5版本读取后得到的值为 -2209017600000。 Spark3.3.x: 以Asia/Shanghai时区的 1900-01-01 00:00:00 为例,通过Spark 2.4.5版本队列写入,Spark 3.3.1版本配置spark.sql.parquet.int96RebaseModeInRead=LEGACY,读取后得到的值为 -2209017943000。 升级引擎版本后是否对作业有影响: 有影响,需要评估TIMESTAMP类型字段的使用方式。 示例代码: 在SQL界面配置: spark.sql.session.timeZone=Asia/Shanghai Spark 2.4.5 create table parquet_timestamp_test (id int, col0 string, col1 timestamp) using parquet; insert into parquet_timestamp_test values (1, "245", "1900-01-01 00:00:00"); 执行SQL读取数据: select * from parquet_timestamp_test; 查询结果: id col0 col1 1 245 -2209017600000 Spark 3.3.1 spark.sql.parquet.int96RebaseModeInRead=LEGACY 执行SQL读取数据: select * from parquet_timestamp_test; 查询结果: id col0 col1 1 245 -2209017943000
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格