华为云用户手册

  • 计费构成分析 表1 阶梯计费说明 计费项 单价(元/用户/月) 付费周期 费用计算 说明 企业版 200 包年/包月 通用人数变更前:100(人)*1(月)*200(元/用户/月)=20000元 包月周期计算公式:人数*200*月数 175 包年/包月 通用人数变更后:200(人)*1(月)*175(元/用户/月)=35000元 包月周期计算公式:人数*175*月数 变更总费用计算:(新规格全周期价格-原规格全周期价格)*周期内剩余天数/周期总天数=(35000-20000)*16/31=5161.29元 由此可见,在3~4月份,该实例总共产生费用为:20000+5161.29=25161.29元
  • 在续费管理页面开通自动续费 登录管理控制台。 单击“控制台”页面上方“费用”,在下拉菜单中选择“续费管理”。 进入“续费管理”页面。 自定义查询条件。 可在“自动续费项”页签查询已经开通自动续费的资源。 可对“手动续费项”、“到期转按需项”、“到期不续费项”页签的资源开通自动续费。 为包年/包月资源开通自动续费。 单个资源开通自动续费:选择需要开通自动续费的弹性云服务器,单击操作列“设为自动续费”。 图1 单个资源开通自动续费 批量资源开通自动续费:选择需要开通自动续费的弹性云服务器,单击列表左上角的“设为自动续费”。 图2 多个资源开通自动续费 选择续费时长,并根据需要设置自动续费次数,单击“开通”。 在“续费管理”页面开通的自动续费,自动续费周期以实际选择的续费时长以及自动续费次数为准。例如:您选择了续费时长3个月,不限次数,即在每次到期前自动续费3个月。 图3 开通自动续费
  • 计费项 目前智能数据洞察(DataArts Insight)的计费项由通用用户数、数据大屏、嵌入报表数组成。 表1 计费项 计费项 产品版本 计费项说明 适用的计费模式 计费公式 通用用户数 企业版 计费因子:通用用户个数。 包年/包月 通用用户个数*单价*购买时长。 数据大屏 企业版 计费因子:数据大屏发布个数。 包年/包月 数据大屏数量*单价*购买时长。 嵌入报表数 企业版 计费因子:嵌入报表数开通个数。 包年/包月 嵌入报表数*单价*购买时长。
  • 影响 DLI Spark 2.3.2版本停止服务(EOS)后,不再提供该软件版本的任何技术服务支持。建议您在执行作业时选择新版本的Spark引擎,推荐使用DLI Spark 3.3.1版本。 正在使用DLI Spark 2.3.2版本的作业也请您尽快切换至新版本的Spark引擎,否则作业执行过程中出现的错误,不再提供该版本的任何技术服务支持。 如您有任何问题,可随时通过工单或者服务热线(4000-955-988或950808)与我们联系。
  • 影响 DLI Flink 1.7版本停止服务(EOS)后,不再提供该软件版本相关的任何技术服务支持。建议您在执行作业时选择新版本的Flink引擎,推荐使用DLI Flink 1.15版本。 正在使用Flink 1.7版本的作业也请您尽快切换至新版本的Flink引擎,否则作业执行过程中出现的错误,不再提供该版本的任何技术服务支持。 如您有任何问题,可随时通过工单或者服务热线(4000-955-988或950808)与我们联系。
  • 影响 EOM后,不再支持新购队列资源,包括不支持新购“包年/包月”和“按需计费”计费模式队列和“队列CU时套餐包”。 为了满足部分业务的使用需求,在2024年6月30日 00:00:00(北京时间)前,您可以最大续订1年队列或者变更队列。 2024年6月30日 00:00:00(北京时间)之后将无法续订、变更队列。 EOL后,队列资源将无法继续使用,请务必在下线前更换使用“弹性资源池”或“default队列”。推荐您购买弹性资源池,并在弹性资源池中创建队列,体验更丰富的DLI产品能力。 如您有任何问题,可随时通过工单或者服务热线(4000-955-988或950808)与我们联系。
  • 影响 DLI Flink 1.10、Flink1.11版本停止服务(EOS)后,不再提供该软件版本的任何技术服务支持。建议您在执行作业时选择新版本的Flink引擎,推荐使用DLI Flink 1.15版本。 正在使用Flink 1.10、Flink1.11版本的作业也请您尽快切换至新版本的Flink引擎,否则作业执行过程中出现的错误,不再提供该版本的任何技术服务支持。 如您有任何问题,可随时通过工单或者服务热线(4000-955-988或950808)与我们联系。
  • 公告说明 为了更好的实现资源共享,提高计算资源利用率,DLI将“包年/包月”和“按需计费”计费模式队列升级为“弹性资源池队列”。即使用DLI计算资源需先购买弹性资源池,并在弹性资源池中创建队列。 DLI“包年/包月”和“按需计费”计费模式队列和“队列CU时套餐包”计划于2024年3月31日 00:00(北京时间)停止销售(EOM)。 DLI“包年/包月”和“按需计费”计费模式队列和“队列CU时套餐包”计划于2025年6月30日 00:00(北京时间)下线(EOL)。
  • SHOW TABLES输出的schema的变化 说明: SHOW TABLES的输出schema从database: string变成了namespace: string。 Spark2.4.x:SHOW TABLES的输出schema是database: string。 Spark3.3.x: SHOW TABLES的输出schema从database: string变成了namespace: string。 其中对于内置catalog,namespace字段被命名为database;对于v2 catalog没有isTemporary字段。 如果你希望在Spark 3.3.x版本中恢复到Spark 2.4.x版本的样式,可以通过将spark.sql.legacy.keepCommandOutputSchema设置为true来实现。 升级引擎版本后是否对作业有影响: 有影响,请排查作业中与SHOW TABLES有关的使用方法,并按上述说明适配新版本的使用要求。 示例代码: 执行sql: show tables; Spark 2.4.5 database tableName isTemporarydb1 table1 false Spark 3.3.1 namespace tableName isTemporarydb1 table1 false
  • DayTimeIntervalType的映射类型变化为Duration 说明: 在ArrowWriter和ArrowColumnVector开发者API中,从Spark 3.3.x版本开始,Spark SQL中的DayTimeIntervalType类型被映射到Apache Arrow的Duration类型。 Spark2.4.x:DayTimeIntervalType被映射到Apache Arrow的Interval类型。 Spark3.3.x:DayTimeIntervalType被映射到Apache Arrow的Duration类型。 升级引擎版本后是否对作业有影响: 有影响,DayTimeIntervalType的映射类型发生变化。
  • 导出 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 ab,"","12",ab Spark 3.3.1 "ab",,"12",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
  • SHOW TABLE EXTENDED输出的schema变化 说明: SHOW TABLE EXTENDED的输出schema从database: string变成了namespace: string。 Spark2.4.x:SHOW TABLE EXTENDED的输出schema是database: string。 Spark3.3.x: SHOW TABLE EXTENDED的输出schema从database: string变成了namespace: string。 其中对于内置catalog,namespace字段被命名为database;对于v2 catalog没有变化。 如果你希望在Spark 3.3.x版本中恢复到Spark 2.4.x版本的样式,可以通过将spark.sql.legacy.keepCommandOutputSchema设置为true来实现。 升级引擎版本后是否对作业有影响: 有影响,请排查作业中与SHOW TABLES有关的使用方法,并按上述说明适配新版本的使用要求。 示例代码: 执行sql: show table extended like 'table%'; Spark 2.4.5 database tableName isTemporary informationdb1 table1 false Database:db1... Spark 3.3.1 namespace tableName isTemporary informationdb1 table1 false Database:db1...
  • timestamps减法表达式返回值类型变化 说明: Spark2.4.x:timestamps减法表达式,如select timestamp'2021-03-31 23:48:00'- timestamp'2021-01-01 00:00:00'返回CalendarIntervalType类型的值。 Spark3.3.x:timestamps减法表达式,如select timestamp'2021-03-31 23:48:00'- timestamp'2021-01-01 00:00:00'返回DayTimeIntervalType类型的值。 在Spark3.3.x版本中如果希望恢复到Spark2.4.x之前的映射类型,可以通过设置配置项spark.sql.legacy.interval.enabled为true来实现。 升级引擎版本后是否对作业有影响: 有影响,映射后的数据类型发生变化。
  • 不再支持混合使用年月字段和日时间字段 说明: Spark2.4.x:单位列表间隔文字可以混合使用年月字段(YEAR 和 MONTH)和日时间字段(WEEK、DAY、...、MICROSECOND)。 Spark3.3.x:单位列表间隔文字不能混合使用年月字段(YEAR 和 MONTH)和日时间字段(WEEK、DAY、...、MICROSECOND)。提示无效输入。 在Spark3.3.x版本中如果希望恢复到Spark2.4.x之前的使用方式,可以通过设置配置项spark.sql.legacy.interval.enabled为true来实现。 升级引擎版本后是否对作业有影响: 有影响。
  • 包含自动生成的别名时创建视图失败 说明: 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
  • Spark SQL支持Char/Varchar类型 说明: Spark2.4.x:在Spark2.4.x版本中,Spark SQL表字段不支持Char/Varchar类型,当指定为Char/Varchar类型时会强制转换为String类型。 Spark3.3.x:Spark SQL表字段支持CHAR/CHARACTER和VARCHAR类型。 升级引擎版本后是否对作业有影响: 无影响。 示例代码: 准备数据: create table test_char(id int,name varchar(24),name2 char(24)); 执行sql: show create table test_char; Spark 2.4.5 create table `test_char`(`id` INT,`name` STRING,`name2` STRING)ROW FORMAT... Spark 3.3.1 create table test_char(id INT,name VARCHAR(24),name2 VARCHAR(24))ROW FORMAT...
  • 新增支持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功能增强。
  • 空值分区的查询语句不同 说明: Spark2.4.x: Spark 3.0.1或更早版本中,如果分区列是字符串类型,则将其解析为其文本表示形式的字符串文本,例如字符串“null”。 通过part_col='null'查询空值分区的数据。 Spark3.3.x: `PARTITION(col=null)`始终在分区规范中解析为null,即使分区列是字符串类型。 通过part_col is null查询空值分区的数据。 升级引擎版本后是否对作业有影响: 有影响,涉及对空值分区的查询需要适配 示例代码: 准备数据: CREATE TABLE test_part_null (col1 INT, p1 STRING) USING PARQUET PARTITIONED BY (p1);INSERT INTO TABLE test_part_null PARTITION (p1 = null) SELECT 0; 执行sql: select * from test_part_null; Spark 2.4.5 0 null Spark 2.4.5版本执行select * from test_part_null where p1='null'可查到分区数据。 Spark 3.3.1 0 Spark 3.3.1版本执行select * from test_part_null where p1 is null才可查询到数据。
  • 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
  • 默认配置spark.sql.adaptive.enabled=true 说明: Spark2.4.x:在Spark 2.4.x版本中,默认情况下spark.sql.adaptive.enabled配置项的值是false,即自适应查询执行(Adaptive Query Execution,简称AQE)特性是关闭的。 Spark3.3.x:从Spark3.3.x-320版本起开始默认开启AQE特性,即spark.sql.adaptive.enabled配置项的值是true。 升级引擎版本后是否对作业有影响: DLI功能增强,spark.sql.adaptive.enabled的默认参数值发生变化。
  • 表刷新对依赖项缓存的影响 说明: 升级Spark3.3.x版本后表刷新会清除表的缓存数据,但保持依赖项缓存。 Spark2.4.x:在Spark 2.4.x版本中,当执行表刷新操作(如REFRESH TABLE)时,不会保留依赖项(例如视图)的缓存数据。 ALTER TABLE .. ADD PARTITIONALTER TABLE .. RENAME PARTITIONALTER TABLE .. DROP PARTITIONALTER TABLE .. RECOVER PARTITION SMS CK REPAIR TABLELOAD DATAREFRESH TABLETRUNCATE TABLEspark.catalog.refreshTable Spark3.3.x:升级Spark3.3.x版本后表刷新会清除表的缓存数据,但保持依赖项缓存。 升级引擎版本后是否对作业有影响: 升级新版本引擎后会增加原有依赖项的缓存数据。
  • 日期差值返回结果的类型变化 说明: date减法表达式(如 date1 - date2)返回DayTimeIntervalType的值 Spark2.4.x:返回CalendarIntervalType。 Spark3.3.x:返回DayTimeIntervalType。 恢复之前的行为,将 spark.sql.legacy.interval.enabled 设置为 true 升级引擎版本后是否对作业有影响: 有影响,日期差值返回结果默认类型变化。
  • 单位到单位间隔的映射类型的变化 说明: Spark2.4.x:Spark2.4.x版本中单位到单位的间隔(如 INTERVAL '1-1' YEAR TO MONTH)和单位列表间隔(如 INTERVAL '3' DAYS '1' HOUR)将转换为CalendarIntervalType类型。 Spark3.3.x:在Spark3.3.x版本中,单位到单位的间隔(如 INTERVAL '1-1' YEAR TO MONTH)和单位列表间隔(如 INTERVAL '3' DAYS '1' HOUR)将转换为 ANSI 间隔类型:YearMonthIntervalType或DayTimeIntervalType类型。 在Spark3.3.x版本中如果希望恢复到Spark2.4.x之前的映射类型,可以通过设置配置项 spark.sql.legacy.interval.enabled为true来实现。 升级引擎版本后是否对作业有影响: 有影响,映射后的数据类型发生变化。
  • 日期加减时间字段间隔后的返回值类型的变化 说明: date +/-只有日期时间字段(如date'2011-11-11')的间隔+间隔12小时返回类型变化。 Spark2.4.x:在Spark 2.4.x中,当对定义为FloatType或DoubleType的JSON属性进行日期加减操作时,例如date'2011-11-11'加上或减去一个时间间隔(如12小时),返回的类型是日期(DateType)。 Spark3.3.x:Spark 3.3.x版本中,对于同样的操作,返回的类型变为时间戳(TimestampType),用于保持与Hive的兼容性。 升级引擎版本后是否对作业有影响: 有影响。 示例代码: 执行sql: select date '2011-11-11' - interval 12 hour Spark 2.4.5 2011-11-10 Spark 3.3.1 1320897600000
  • 对分区表数据的处理方式不同 说明: datasourcev1分区外表,路径下已经存在不带uuid的分区路径数据。 执行insert overwrite partition操作,Spark3.3.x会清除之前不带uuid的分区数据,Spark2.4.x不会清理。 Spark2.4.x: 保留不带uuid分区路径下数据。 Spark3.3.x: 会删除不带uuid分区路径下数据。 升级引擎版本后是否对作业有影响: 有影响,会清理脏数据。 示例代码: 准备数据: obs://bucket1/test/overwrite_datasource下创建pt=pt1目录,并导入一个parquet数据文件。 create table overwrite_datasource(id int,name string,pt string) using parquet PARTITIONED by(pt) LOCATION 'obs://bucket1/test/overwrite_datasource';SELECT * FROM overwrite_datasource1 where pt='pt1'两个版本均查询不到数据。 执行sql: insert OVERWRITE table overwrite_datasource partition(pt='pt1') values(2,'aa2'); Spark 2.4.5 保留了pt=pt1目录。 Spark 3.3.1 删除了pt=pt1目录。
  • 新增支持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并行化特性,提升作业运行的可靠性。
  • 新增支持解析“+Infinity”、“+INF”和“-INF”类型字符串的值 说明: Spark2.4.x:当从定义为FloatType 或 DoubleType的JSON属性读取值时,Spark2.4.x仅支持解析“Infinity”和“-Infinity”。 Spark3.3.x:当从定义为FloatType 或 DoubleType的JSON属性读取值时,Spark3.3.x除了支持解析“Infinity”和“-Infinity”之外,还支持解析字符串“+Infinity”、“+INF”和“-INF”。 升级引擎版本后是否对作业有影响: 功能增强,无影响
  • 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) Spark 2.4.5 1 name1 2021-01-011 name1 Spark 3.3.1 1 name1 2021-01-011 name1 2021-01-01
共99354条