华为云用户手册

  • DLI 是否支持创建临时表? 问题描述:临时表主要用于存储临时中间结果,当事务结束或者会话结束的时候,临时表的数据可以自动删除。例如MySQL中可以通过:“create temporary table ...” 语法来创建临时表,通过该表存储临时数据,结束事务或者会话后该表数据自动清除。当前DLI是否支持该功能? 解决措施:当前DLI不支持创建临时表功能,只能根据当前业务逻辑控制来实现相同功能。DLI支持的SQL语法可以参考创建DLI表。
  • 如何合并小文件 使用SQL过程中,生成的小文件过多时,会导致作业执行时间过长,且查询对应表时耗时增大,建议对小文件进行合并。 推荐使用临时表进行数据中转 自读自写在突发异常场景下存在数据丢失的风险 执行SQL: INSERT OVERWRITE TABLE tablenameselect * FROM tablenameDISTRIBUTE BY floor(rand()*20) 父主题: SQL作业开发类
  • Group By数据倾斜解决方案 取部分数据执行select count(*) as sum,Key from tbl group by Key order by sum desc查询具体是哪些key引起的数据倾斜。 然后对于倾斜Key单独做处理,加盐让其先将他分为多个task分别统计,最后再对分开统计结果进行结合统计。 例如:如下SQL示例,假设已知倾斜key为'Key01',导致单个task处理大量数据,做如下处理: SELECT a.Key, SUM(a.sum) AS CntFROM ( SELECT Key, count(*) AS sum FROM tbl GROUP BY Key, CASE WHEN KEY = 'Key01' THEN floor(random () * 200) ELSE 0 END ) aGROUP BY a.Key;
  • JOIN数据倾斜解决方案 登录 数据湖探索 管理控制台,选择“SQL作业”,在要修改的作业所在行的“操作”列,单击“编辑”进入SQL编辑器界面。 在SQL编辑器界面,单击“设置”,在“配置项”尝试添加以下几个Spark参数进行解决。 参数项如下,冒号前是配置项,冒号后是配置项的值。 spark.sql.enableToString:falsespark.sql.adaptive.join.enabled:truespark.sql.adaptive.enabled:truespark.sql.adaptive.skewedJoin.enabled:truespark.sql.adaptive.enableToString:falsespark.sql.adaptive.skewedPartitionMaxSplits:10 spark.sql.adaptive.skewedPartitionMaxSplits表示倾斜拆分力度,可不加,默认为5,最大为10。 单击“执行”重新运行作业,查看优化效果。
  • count函数如何进行聚合 使用count函数进行聚合的正确用法如下: SELECT http_method, count(http_method)FROM apigatewayWHERE service_id = 'ecs' Group BY http_method 或者 SELECT http_methodFROM apigatewayWHERE service_id = 'ecs' DISTRIBUTE BY http_method 错误用法:将会报错。 SELECT http_method, count(http_method)FROM apigatewayWHERE service_id = 'ecs' DISTRIBUTE BY http_method 父主题: SQL作业开发类
  • 提示OBS Bucket没有授权怎么办? DLI更新委托后,将原有的dli_admin_agency升级为dli_management_agency。 dli_management_agency包含跨源操作、 消息通知 、用户授权操作所需的权限,除此之外的其他委托权限需求,都需自定义DLI委托。 授权DLI读写OBS的权限并不包含在的DLI委托dli_management_agency中。需要您创建自定义委托,并将委托配置在作业中(使用Flink 1.15和Spark 3.3及以上版本的引擎执行作业时需要配置)。 了解dli_management_agency请参考DLI委托概述。 创建自定义委托并在作业中配置委托的操作步骤请参考自定义DLI委托权限。 父主题: DLI权限管理类
  • OBS表压缩率较高怎么办? 当您在提交导入数据到DLI表的作业时,如果遇到Parquet/Orc格式的OBS表对应的文件压缩率较高,超过了5倍的压缩率,您可以通过调整配置来优化作业的性能。 具体方法:在submit-job请求体conf字段中配置“dli.sql.files.maxPartitionBytes=33554432”。 该配置项默认值为128MB,将其配置成32MB,可以减少单个任务读取的数据量,避免因过高的压缩比,导致解压后单个任务处理的数据量过大。 但调整这个参数可能会影响到作业的执行效率和资源消耗,因此在做调整时需要根据实际的数据量和压缩率来选择适合的参数值。 父主题: DLI数据库和表类
  • Flink Jar作业上传配置文件操作流程 自定义(JAR)作业支持上传配置文件。 将配置文件通过程序包管理上传到DLI; 在Flink jar作业的其他依赖文件参数中,选择创建的DLI程序包; 在代码中通过ClassName.class.getClassLoader().getResource("userData/fileName")加载该文件。 ClassName”为需要访问该文件的类名。 userData为固定文件路径名,不支持修改或自定义其他路径名。 fileName为需要访问的文件名。 本节示例适用于Flink 1.12版本。Flink 1.15版本的Jar作业开发指导请参考Flink Jar写入数据到OBS开发指南。
  • 对两个表进行join操作时,提示:SQL_ANALYSIS_ERROR: Reference 't.id' is ambiguous, could be: t.id, t.id.; 出现这个提示,表示进行join操作的两个表中包含相同的字段,但是在执行命令时,没有指定该字段的归属。 例如:在表tb1和tb2中都包含字段“id”。 错误的命令: select id from tb1 join tb2; 正确的命令: select tb1.id from tb1 join tb2; 父主题: SQL作业运维类
  • Flink作业运行异常,如何定位 在“Flink作业”管理页面,对应作业“操作”列单击“编辑”按钮,在作业运行界面确认作业是否勾选“保存作业日志”参数。 图1 保存作业日志 是,则执行3。 否,则运行日志不会转储OBS桶,需要先执行2保存作业运行日志。 在作业运行界面勾选“保存作业日志”,在“OBS桶”参数选择存储运行日志的OBS桶。单击“启动”重新运行作业。作业重新运行完成后再执行3及后续步骤。 在Flink作业列表单击对应作业名称,进入作业详情页面,选择“运行日志”页签。 单击OBS桶,获取对应作业的完整运行日志。 图2 查看运行日志 下载最新“jobmanager.log”文件,搜索“RUNNING to FAILED”关键字,通过上下文的错误栈,确认失败原因。 如果“jobmanager.log”文件中的信息不足以定位,可以在运行日志中找到对应的“taskmanager.log”日志,搜索“RUNNING to FAILED”关键字,确认失败原因。 父主题: Flink作业性能调优类
  • Flink作业如何保存作业日志? 在创建Flink SQL作业或者Flink Jar作业时,可以在作业编辑页面,勾选“保存作业日志”参数,将作业运行时的日志信息保存到OBS。 勾选“保存作业日志”参数后,需配置“OBS桶”参数,选择OBS桶用于保存用户作业日志信息。如果选择的OBS桶是未授权状态,需要单击“OBS授权”。 日志信息的保存路径为:“桶名/jobs/logs/作业id开头的目录”。其中,“桶名”可以自定义。“/jobs/logs/作业id开头的目录”为固定格式。 在作业列表中,单击对应的作业名称,然后在“运行日志”页签,可以单击页面提供的OBS链接跳转至对应的路径下。 关于如何创建Flink SQL作业或者Flink Jar作业,请参考《 数据湖 探索用户指南》。 父主题: Flink作业咨询类
  • (推荐)方案1:使用临时AK/SK 建议使用临时AK/SK,获取方式可参见 统一身份认证 服务_获取临时AK/SK。 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全。 表1 DLI获取访问凭据相关开发指南 类型 操作指导 说明 Flink作业场景 Flink Opensource SQL使用DEW管理访问凭据 Flink Opensource SQL场景使用DEW管理和访问凭据的操作指导,将Flink作业的输出数据写入到Mysql或DWS时,在connector中设置账号、密码等属性。 Flink Jar 使用DEW获取访问凭证读写OBS 访问OBS的AKSK为例介绍Flink Jar使用DEW获取访问凭证读写OBS的操作指导。 用户获取Flink作业委托临时凭证 DLI提供了一个通用接口,可用于获取用户在启动Flink作业时设置的委托的临时凭证。该接口将获取到的该作业委托的临时凭证封装到com.huaweicloud.sdk.core.auth.BasicCredentials类中。 本操作介绍获取Flink作业委托临时凭证的操作方法。 Spark作业场景 Spark Jar 使用DEW获取访问凭证读写OBS 访问OBS的AKSK为例介绍Spark Jar使用DEW获取访问凭证读写OBS的操作指导。 用户获取Spark作业委托临时凭证 本操作介绍获取Spark Jar作业委托临时凭证的操作方法。
  • 如何在一个Flink作业中将数据写入到不同的Elasticsearch集群中? 在Flink 作业中,可以使用CREATE语句来定义Source表和Sink表,并指定它们的连接器类型以及相关的属性。 如果需要将数据写入到不同的Elasticsearch集群,您需要为每个集群配置不同的连接参数,并确保Flink作业能够正确地将数据路由到各个集群。 例如本例中分别对es1和es2定义连接器类型以及相关的属性。 在对应的Flink作业中添加如下SQL语句。 create source stream ssource(xx);create sink stream es1(xx) with (xx);create sink stream es2(xx) with (xx);insert into es1 select * from ssource;insert into es2 select * from ssource; 父主题: Flink SQL作业类
  • 方案2:Spark Jar作业设置获取AK/SK 获取结果为AK/SK时,设置如下: 代码创建SparkContext val sc: SparkContext = new SparkContext()sc.hadoopConfiguration.set("fs.obs.access.key", ak)sc.hadoopConfiguration.set("fs.obs.secret.key", sk) 代码创建SparkSession val sparkSession: SparkSession = SparkSession .builder() .config("spark.hadoop.fs.obs.access.key", ak) .config("spark.hadoop.fs.obs.secret.key", sk) .enableHiveSupport() .getOrCreate() 获取结果为AK/SK和Securitytoken时,鉴权时,临时AK/SK和Securitytoken必须同时使用,设置如下: 代码创建SparkContext val sc: SparkContext = new SparkContext()sc.hadoopConfiguration.set("fs.obs.access.key", ak)sc.hadoopConfiguration.set("fs.obs.secret.key", sk)sc.hadoopConfiguration.set("fs.obs.session.token", sts) 代码创建SparkSession val sparkSession: SparkSession = SparkSession .builder() .config("spark.hadoop.fs.obs.access.key", ak) .config("spark.hadoop.fs.obs.secret.key", sk) .config("spark.hadoop.fs.obs.session.token", sts) .enableHiveSupport() .getOrCreate()
  • 什么是区域、可用区? 区域和可用区用于描述数据中心的位置,您可以在特定的区域、可用区创建资源。 区域(Region):从地理位置和网络时延维度划分,同一个Region内共享弹性计算、块存储、对象存储、VPC网络、弹性公网IP、镜像等公共服务。Region分为通用Region和专属Region,通用Region指面向公共租户提供通用云服务的Region;专属Region指只承载同一类业务或只面向特定租户提供业务服务的专用Region。 可用区(AZ,Availability Zone):一个AZ是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上再将计算、网络、存储等资源划分成多个集群。一个Region中的多个AZ间通过高速光纤相连,以满足用户跨AZ构建高可用性系统的需求。 图1阐明了区域和可用区之间的关系。 图1 区域和可用区 目前,华为云已在全球多个地域开放云服务,您可以根据需求选择适合自己的区域和可用区。更多信息请参见华为云全球站点。
  • 如何选择区域? 选择区域时,您需要考虑以下几个因素: 地理位置 一般情况下,建议就近选择靠近您或者您的目标用户的区域,这样可以减少网络时延,提高访问速度。不过,在基础设施、BGP网络品质、资源的操作与配置等方面,中国大陆各个区域间区别不大,如果您或者您的目标用户在中国大陆,可以不用考虑不同区域造成的网络时延问题。 香港、曼谷等其他地区和国家提供国际带宽,主要面向非中国大陆地区的用户。如果您或者您的目标用户在中国大陆,使用这些区域会有较长的访问时延,不建议使用。 在除中国大陆以外的亚太地区有业务的用户,可以选择“中国-香港”、“亚太-曼谷”或“亚太-新加坡”区域。 在非洲地区有业务的用户,可以选择“南非-约翰内斯堡”区域。 在欧洲地区有业务的用户,可以选择“欧洲-巴黎”区域。 资源的价格 不同区域的资源价格可能有差异,请参见华为云服务价格详情。
  • 为什么DLI增强型跨源连接要创建对等连接? DLI增强型跨源连接创建对等连接的主要原因是为了实现DLI与不同VPC中的数据源之间的网络连通。 当DLI需要访问外部数据源,而这些数据源位于不同的VPC中时,由于网络隔离,DLI默认无法直接读取这些数据源的数据。通过创建增强型跨源连接,可以采用对等连接的方式打通DLI与数据源的VPC网络,从而实现数据的互通和跨源分析。 增强型跨源连接的优势: 网络连通性:直接打通DLI与目的数据源的VPC网络实现数据互通。 支持多种数据源:支持DLI与多种数据源的网络连通,例如DWS,RDS, CSS ,D CS 等数据源。 父主题: 增强型跨源连接类
  • Flink jobmanager日志一直报Timeout expired while fetching topic metadata怎么办? Flink JobManager提示 "Timeout expired while fetching topic metadata" ,说明Flink作业在尝试获取Kafka主题的元数据时超时了。 此时您需要先检查Flink作业和Kafka的网络连通性,确保执行Flink作业所在的队列可以访问Kafka所在的VPC网络。 若果网络不可达,请先配置网络连通后再重新执行作业。 操作方法请参考测试地址连通性。 配置详情请参考配置网络连通。 父主题: Flink SQL作业类
  • 问题现象 创建OBS外表,因为指定的OBS文件内容中某字段包含回车换行符导致表字段数据错误。 例如,当前创建的OBS外表语句为: CREATE TABLE test06 (name string, id int, no string) USING csv OPTIONS (path "obs://dli-test-001/test.csv"); test.csv文件内容如下: Jordon,88,"aabb" 因为最后一个字段的aa和bb之间存在回车换行。创建OBS外表后,查询test06表数据内容显示如下: nameidclassnoJordon88aabb"nullnull
  • 解决方案 出现该问题时建议通过以下操作步骤解决。 登录DWS命令执行窗口,执行以下SQL命令,临时将所有non-active的连接释放掉。 SELECT PG_TERMINATE_BACKEND(pid) from pg_stat_activity WHERE state='idle'; 检查应用程序是否未主动释放连接,导致连接残留。建议优化代码,合理释放连接。 在 GaussDB (DWS) 控制台设置会话闲置超时时长session_timeout,在闲置会话超过所设定的时间后服务端将主动关闭连接。 session_timeout默认值为600秒,设置为0表示关闭超时限制,一般不建议设置为0。 session_timeout设置方法如下: 登录GaussDB(DWS) 管理控制台。 在左侧导航栏中,单击“集群管理”。 在集群列表中找到所需要的集群,单击集群名称,进入集群“基本信息”页面。 单击“参数修改”页签,修改参数“session_timeout”,然后单击“保存”。 在“修改预览”窗口,确认修改无误后,单击“保存”。 更多问题处理步骤,请参考DWS数据库连接问题。
  • 性能分析 由于Flink的反压机制,流作业在存在性能问题的情况下,会导致数据源消费速率跟不上生产速率,从而引起Kafka消费组的积压。在这种情况下,可以通过算子的反压和时延,确定算子的性能瓶颈点。 作业最后一个算子(Sink)反压正常(绿色),前面算子反压高(红色) 该场景说明性能瓶颈点在sink,此时需要根据具体数据源具体优化,比如对于JDBC数据源,可以通过调整写出批次(connector.write.flush.max-rows)、JDBC参数重写(rewriteBatchedStatements=true)等进行优化。 作业非倒数第二个算子反压高(红色) 该场景说明性能瓶颈点在Vertex2算子,可以通过查看该算子描述,确认该算子具体功能,以进行下一步优化。 所有算子反压都正常(绿色),但存在数据堆积 该场景说明性能瓶颈点在Source,主要是受数据读取速度影响,此时可以通过增加Kafka分区数并增加source并发解决。 作业一个算子反压高(红色),而其后续的多个并行算子都不存在反压(绿色) 该场景说明性能瓶颈在Vertex2或者Vertex3,为了进一步确定具体瓶颈点算子,可以在FlinkUI页面开启inPoolUsage监控。如果某个算子并发对应的inPoolUsage长时间为100%,则该算子大概率为性能瓶颈点,需分析该算子以进行下一步优化。 图3 inPoolUsage监控
  • 性能调优 rocksdb状态调优 topN排序、窗口聚合计算以及流流join等都涉及大量的状态操作,因而如果发现这类算子存在性能瓶颈,可以尝试优化状态操作的性能。主要可以尝试通过如下方式优化: 增加状态操作内存,降低磁盘IO 增加单slot cu资源数 配置优化参数: taskmanager.memory.managed.fraction=xx state.backend.rocksdb.block.cache-size=xx state.backend.rocksdb.writebuffer.size=xx 开启微批模式,避免状态频繁操作 配置参数: table.exec.mini-batch.enabled=true table.exec.mini-batch.allow-latency=xx table.exec.mini-batch.size=xx 使用超高IO本地盘规格机型,加速磁盘操作 group agg单点及数据倾斜调优 按天聚合计算或者group by key不均衡场景下,group聚合计算存在单点或者数据倾斜问题,此时,可以通过将聚合计算拆分成Local-Global进行优化。配置方式为设置调优参数: table.optimizer.aggphase-strategy=TWO_PHASE count distinct优化 在count distinct关联key比较稀疏场景下,即使使用Local-Global,单点问题依然非常严重,此时可以通过配置以下调优参数进行分桶拆分优化: table.optimizer.distinct-agg.split.enabled=true table.optimizer.distinct-agg.split.bucket-num=xx 使用filter替换case when: 例如: COUNT(DISTINCT CASE WHEN flag IN ('android', 'iphone')THEN user_id ELSE NULL END) AS app_uv 可调整为 COUNT(DISTINCT user_id) FILTER(WHERE flag IN ('android', 'iphone')) AS app_uv 维表join优化 维表join根据左表进入的每条记录join关联键,先在缓存中匹配,如果匹配不到,则从远程拉取。因而,可以通过如下方式优化: 增加JVM内存并增加缓存记录条数 维表设置索引,加快查询速度
  • SQL作业如何指定表的部分字段进行表数据的插入 如果需要将数据插入到表中,但只想指定部分字段,可以使用INSERT INTO语句结合SELECT子句来实现。 但是DLI目前不支持直接在INSERT INTO语句中指定部分列字段进行数据插入,您需要确保在SELECT子句中选择的字段数量和类型与目标表的Schema信息匹配。即确保源表和目标表的数据类型和列字段个数相同,以避免插入失败。 如果目标表中的某些字段在SELECT子句中没有被指定,那么这些字段也可能被插入默认值或置为空值(取决于该字段是否允许空值)。 父主题: SQL作业开发类
  • 为什么SQL作业一直处于“提交中”? SQL作业一直在提交中,有以下几种可能: 刚购买DLI队列后,第一次进行SQL作业的提交。需要等待5~10分钟,待后台拉起集群后,即可提交成功。 若刚刚对队列进行网段修改,立即进行SQL作业的提交。需要等待5~10分钟,待后台重建集群后,即可提交功。 按需队列,队列已空闲状态(超过1个小时),则后台资源已经释放。此时进行SQL作业的提交。需要等待5~10分钟,待后台重新拉起集群后,即可提交成功。 父主题: SQL作业开发类
  • 操作步骤 该示例将car_info数据,以day字段为分区字段,parquet为编码格式,转储数据到OBS。更多内容请参考《数据湖探索Flink SQL语法参考》。 1 2 3 4 5 6 7 8 910111213 create sink stream car_infos ( carId string, carOwner string, average_speed double, day string ) partitioned by (day) with ( type = "filesystem", file.path = "obs://obs-sink/car_infos", encode = "parquet", ak = "{{myAk}}", sk = "{{mySk}}"); 数据最终在OBS中的存储目录结构为:obs://obs-sink/car_infos/day=xx/part-x-x。 数据生成后,可通过如下SQL语句建立OBS分区表,用于后续批处理: 创建OBS分区表。 12345678 create table car_infos ( carId string, carOwner string, average_speed double) partitioned by (day string) stored as parquet location 'obs://obs-sink/car-infos'; 从关联OBS路径中恢复分区信息。 1 alter table car_infos recover partitions;
  • Spark作业运行大批量数据时上报作业运行超时异常错误 当Spark作业运行大批量数据时,如果出现作业运行超时异常错误,通常是由于作业的资源配置不足、数据倾斜、网络问题或任务过多导致的。 解决方案: 设置并发数:通过设置合适的并发数,可以启动多任务并行运行,从而提高作业的处理能力。 例如访问DWS大批量数据库数据时设置并发数,启动多任务的方式运行,避免作业运行超时。 具体并发设置可以参考对接DWS样例代码中的partitionColumn和numPartitions相关字段和案例描述。 调整Spark作业的Executor数量,分配更多的资源用于Spark作业的运行。 父主题: Spark作业运维类
  • 问题描述 在Spark SQL作业中,使用LOAD DATA命令导入数据到DLI表中时报如下错误: error.DLI.0001: IllegalArgumentException: Buffer size too small. size = 262144 needed = 2272881 或者如下错误 error.DLI.0999: InvalidProtocolBufferException: EOF in compressed stream footer position: 3 length: 479 range: 0 offset: 3 limit: 479 range 0 = 0 to 479 while trying to read 143805 bytes
  • 作业语义检验时提示DIS通道不存在怎么处理? 处理方法如下: 登录到DIS管理控制台,在左侧菜单栏选择“通道管理”。检查Flink作业SQL语句中的DIS通道是否存在。 如果Flink作业中的DIS通道还未创建,请参见《 数据接入服务 用户指南》中“开通DIS通道”章节。 确保创建的DIS通道和Flink作业处于统一区域。 如果DIS通道已创建,则检查确保DIS通道和Flink流作业是否处于同一区域。 父主题: Flink SQL作业类
  • RDS表有自增主键时怎样在DLI插入数据? 在DLI中创建关联RDS表时,如果RDS表包含自增主键或其他自动填充字段,您在DLI中插入数据时可以采取以下措施: 插入数据时省略自增字段:在DLI中插入数据时,对于自增主键字段或其他自动填充的字段,您可以在插入语句中省略这些字段。数据库会自动为这些字段生成值。例如,如果表中有一个名为id的自增主键字段,您可以在插入数据时不包含这个字段,数据库会自动为新插入的行分配一个唯一的id值。 使用NULL值:如果您需要在插入数据时明确指定某些字段由数据库自动填充,可以在这些字段的位置填写NULL。这样,数据库会识别到这些字段应该由系统自动生成值,而不是由用户指定。 父主题: 增强型跨源连接类
  • DLI使用 SMN 主题,提示SMN主题不存在,怎么处理? 设置DLI Flink作业的运行参数时,勾选“作业异常告警”参数,可在作业出现运行异常或者欠费情况时,将作业异常告警信息,以SMN的方式通知用户。 如果遇到提示SMN主题不存在您可以按照以下步骤进行排查: 确认SMN主题是否已经创建。 如果未创建,请在SMN服务管理控制台创建一个新的主题。 如何自定义SMN主题,请参见《消息通知服务用户指南》中“创建主题”章节。 检查 IAM 权限。 如果SMN主题已经存在,但仍然提示不存在,请进入统一身份认证服务(IAM),选择对应子账户所在的用户组,确保该用户组已添加相应Region的SMN策略。 确认主题名称和区域。 确保您在DLI中配置的SMN主题名称和区域与实际创建的SMN主题一致。如果SMN主题名称不一致也会导致系统提示SMN主题不存在。 父主题: Flink作业咨询类
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全