-
DLI支持将数据存储到OBS上,后续再通过创建OBS表即可对OBS上的数据进行分析和处理。本指导中的操作内容包括:创建OBS表、导入OBS表数据、插入和查询OBS表数据等内容来帮助您更好的在DLI上对OBS表数据进行处理。前提条件已创建OBS的桶。具体OBS操作可以参考《对象存储服务控制台指南》。本指导中的OBS桶名都为“dli-test-021”。已创建DLI的SQL队列。创建队列详细介绍请参考创建队列。注意:创建队列时,队列类型必须要选择为:SQL队列。前期准备创建DLI数据库登录DLI管理控制台,选择“SQL编辑器”,在SQL编辑器中“执行引擎”选择“spark”,“队列”选择已创建的SQL队列。在SQL编辑器中输入以下语句创建数据库“testdb”。详细的DLI创建数据库的语法可以参考创建DLI数据库。create database testdb;后续章节操作都需要在testdb数据库下进行操作。DataSource和Hive两种语法创建OBS表的区别两种语法创建OBS表主要差异点参见表1。表1 DataSource语法和Hive语法创建OBS表的差异点语法支持的数据类型范围创建分区表时分区字段差异支持的分区数DataSource语法支持orc,parquet,json,csv,carbon,avro类型创建分区表时,分区字段在表名和PARTITIONED BY后都需要指定。具体可以参考DataSource语法创建单分区OBS表。单表分区数最多允许7000个。Hive语法支持TEXTFILE, AVRO, ORC, SEQUENCEFILE, RCFILE, PARQUET, CARBON创建分区表时,指定的分区字段不能出现在表后,只能通过PARTITIONED BY指定分区字段名和类型。具体可以参考Hive语法创建OBS分区表。单表分区数最多允许100000个。创建OBS表的DataSource语法可以参考使用DataSource语法创建OBS表。创建OBS表的Hive语法可以参考使用Hive语法创建OBS表。使用DataSource语法创建OBS表以下通过创建CSV格式的OBS表举例,创建其他数据格式的OBS表方法类似,此处不一一列举。创建OBS非分区表指定OBS数据文件,创建csv格式的OBS表。按照以下文件内容创建“test.csv”文件,并将“test.csv”文件上传到OBS桶“dli-test-021”的根目录下。Jordon,88,23 Kim,87,25 Henry,76,26登录DLI管理控制台,选择“SQL编辑器”,在SQL编辑器中“执行引擎”选择“spark”,“队列”选择已创建的SQL队列,数据库选择“testdb”,执行以下命令创建OBS表。CREATE TABLE testcsvdatasource (name string, id int) USING csv OPTIONS (path "obs://dli-test-021/test.csv");注意:如果是通过指定的数据文件创建的OBS表,后续不支持在DLI通过insert表操作插入数据。OBS文件内容和表数据保持同步。查询已创建的“testcsvdatasource”表数据。select * from testcsvdatasource;查询结果显示如下本地修改原始的OBS表文件“test.csv”,增加一行“Aarn,98,20”数据,重新替换OBS桶目录下的“test.csv”文件。Jordon,88,23 Kim,87,25 Henry,76,26 Aarn,98,20在DLI的SQL编辑器中再次查询“testcsvdatasource”表数据,DLI上可以查询到新增的“Aarn,98,20”数据。select * from testcsvdatasource;指定OBS数据文件目录,创建csv格式的OBS表。指定的OBS数据目录不包含数据文件。在OBS桶“dli-test-021”根目录下创建数据文件目录“data”。登录DLI管理控制台,选择“SQL编辑器”,在SQL编辑器中“执行引擎”选择“spark”,“队列”选择已创建的SQL队列,数据库选择“testdb”。在DLI的“testdb”数据库下创建OBS表“testcsvdata2source”。CREATE TABLE testcsvdata2source (name STRING, score DOUBLE, classNo INT) USING csv OPTIONS (path "obs://dli-test-021/data");通过insert语句插入表数据。insert into testcsvdata2source VALUES('Aarn','98','20');insert作业运行成功后,查询OBS表“testcsvdata2source”数据。select * from testcsvdata2source;在OBS桶的“obs://dli-test-021/data”目录下刷新后查询,生成了csv数据文件,文件内容为insert插入的数据内容。指定的OBS数据目录包含数据文件。在OBS桶“dli-test-021”根目录下创建数据文件目录“data2”。创建如下内容的测试数据文件“test.csv”,并上传文件到“obs://dli-test-021/data2”目录下。Jordon,88,23 Kim,87,25 Henry,76,26登录DLI管理控制台,选择“SQL编辑器”,在SQL编辑器中“执行引擎”选择“spark”,“队列”选择已创建的SQL队列,数据库选择“testdb”。在DLI的“testdb”数据库下创建OBS表“testcsvdata3source”。CREATE TABLE testcsvdata3source (name STRING, score DOUBLE, classNo INT) USING csv OPTIONS (path "obs://dli-test-021/data2");通过insert语句插入表数据。insert into testcsvdata3source VALUES('Aarn','98','20');insert作业运行成功后,查询OBS表“testcsvdata3source”数据。select * from testcsvdata3source;在OBS桶的“obs://dli-test-021/data2”目录下刷新后查询,生成了一个csv数据文件,内容为insert插入的表数据内容。创建OBS分区表创建单分区OBS表在OBS桶“dli-test-021”根目录下创建数据文件目录“data3”。登录DLI管理控制台,选择“SQL编辑器”,在SQL编辑器中“执行引擎”选择“spark”,“队列”选择已创建的SQL队列,数据库选择“testdb”。在DLI的“testdb”数据库下创建以“classNo”列为分区的OBS分区表“testcsvdata4source”,指定OBS目录“obs://dli-test-021/data3”。CREATE TABLE testcsvdata4source (name STRING, score DOUBLE, classNo INT) USING csv OPTIONS (path "obs://dli-test-021/data3") PARTITIONED BY (classNo);在OBS桶的“obs://dli-test-021/data3”目录下创建“classNo=25”的分区目录。根据以下文件内容创建数据文件“test.csv”,并上传到OBS的“obs://dli-test-021/data3/classNo=25”目录下。Jordon,88,25 Kim,87,25 Henry,76,25在SQL编辑器中执行以下命令,导入分区数据到OBS表“testcsvdata4source ”。ALTER TABLE testcsvdata4source ADD PARTITION (classNo = 25) LOCATION 'obs://dli-test-021/data3/classNo=25';查询OBS表“testcsvdata4source ”classNo分区为“25”的数据:select * from testcsvdata4source where classNo = 25;插入如下数据到OBS表“testcsvdata4source ”:insert into testcsvdata4source VALUES('Aarn','98','25'); insert into testcsvdata4source VALUES('Adam','68','24');查询OBS表“testcsvdata4source ”classNo分区为“25”和“24”的数据。注意:分区表在进行查询时where条件中必须携带分区字段,否则会查询失败,报:DLI.0005: There should be at least one partition pruning predicate on partitioned table。select * from testcsvdata4source where classNo = 25;select * from testcsvdata4source where classNo = 24;在OBS桶的“obs://dli-test-021/data3”目录下点击刷新,该目录下生成了对应的分区文件,分别存放新插入的表数据。图1 OBS上classNo分区为“25”文件数据图2 OBS上classNo分区为“24”文件数据创建多分区OBS表在OBS桶“dli-test-021”根目录下创建数据文件目录“data4”。登录DLI管理控制台,选择“SQL编辑器”,在SQL编辑器中“执行引擎”选择“spark”,“队列”选择已创建的SQL队列,数据库选择“testdb”。在“testdb”数据库下创建以“classNo”和“dt”列为分区的OBS分区表“testcsvdata5source”,指定OBS目录“obs://dli-test-021/data4”。CREATE TABLE testcsvdata5source (name STRING, score DOUBLE, classNo INT, dt varchar(16)) USING csv OPTIONS (path "obs://dli-test-021/data4") PARTITIONED BY (classNo,dt);给 testcsvdata5source表插入如下测试数据:insert into testcsvdata5source VALUES('Aarn','98','25','2021-07-27'); insert into testcsvdata5source VALUES('Adam','68','25','2021-07-28');根据classNo分区列查询testcsvdata5source数据。select * from testcsvdata5source where classNo = 25;根据dt分区列查询testcsvdata5source数据。select * from testcsvdata5source where dt like '2021-07%';在OBS桶“obs://dli-test-021/data4”目录下刷新后查询,会生成如下数据文件:文件目录1:obs://dli-test-021/data4/xxxxxx/classNo=25/dt=2021-07-27文件目录2:obs://dli-test-021/data4/xxxxxx/classNo=25/dt=2021-07-28在OBS桶的“obs://dli-test-021/data4”目录下创建“classNo=24”的分区目录,再在“classNo=24”目录下创建子分区目录“dt=2021-07-29”。根据以下文件内容创建数据文件“test.csv”,并上传到OBS的“obs://dli-test-021/data4/classNo=24/dt=2021-07-29”目录下。Jordon,88,24,2021-07-29 Kim,87,24,2021-07-29 Henry,76,24,2021-07-29在SQL编辑器中执行以下命令,导入分区数据到OBS表“testcsvdata5source ”。ALTER TABLE testcsvdata5source ADD PARTITION (classNo = 24,dt='2021-07-29') LOCATION 'obs://dli-test-021/data4/classNo=24/dt=2021-07-29';根据classNo分区列查询testcsvdata5source数据。select * from testcsvdata5source where classNo = 24;根据dt分区列查询所有“2021-07”月的所有数据。select * from testcsvdata5source where dt like '2021-07%';使用Hive语法创建OBS表以下通过创建TEXTFILE格式的OBS表举例,创建其他数据格式的OBS表方法类似,此处不一一列举。创建OBS非分区表在OBS桶的“dli-test-021”根目录下创建数据文件目录“data5”。根据以下文件内容创建数据文件“test.txt”并上传到OBS的“obs://dli-test-021/data5”目录下。Jordon,88,23 Kim,87,25 Henry,76,26登录DLI管理控制台,选择“SQL编辑器”,在SQL编辑器中“执行引擎”选择“spark”,“队列”选择已创建的SQL队列,数据库选择“testdb”。使用Hive语法创建OBS表,指定OBS文件路径为“obs://dli-test-021/data5/test.txt”,行数据分割符为','。CREATE TABLE hiveobstable (name STRING, score DOUBLE, classNo INT) STORED AS TEXTFILE LOCATION 'obs://dli-test-021/data5' ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';说明:ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' :表示每行记录通过',' 进行分隔。查询hiveobstable表数据。select * from hiveobstable;插入表数据:insert into hiveobstable VALUES('Aarn','98','25'); insert into hiveobstable VALUES('Adam','68','25');查询表数据:select * from hiveobstable;在OBS桶“obs://dli-test-021/data5”目录下刷新后查询,生成了两个数据文件,分别对应新插入的数据。创建表字段为复杂数据格式的OBS表在OBS桶的“dli-test-021”根目录下创建数据文件目录“data6”。根据以下文件内容创建数据文件“test.txt”并上传到OBS的“obs://dli-test-021/data6”目录下。Jordon,88-22,23:21 Kim,87-22,25:22 Henry,76-22,26:23登录DLI管理控制台,选择“SQL编辑器”,在SQL编辑器中“执行引擎”选择“spark”,“队列”选择已创建的SQL队列,数据库选择“testdb”。使用Hive语法创建OBS表,指定OBS文件路径为“obs://dli-test-021/data6”。CREATE TABLE hiveobstable2 (name STRING, hobbies ARRAY<string>, address map<string,string>) STORED AS TEXTFILE LOCATION 'obs://dli-test-021/data6' ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' COLLECTION ITEMS TERMINATED BY '-' MAP KEYS TERMINATED BY ':';说明:ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' :表示每条记录通过',' 进行分隔。COLLECTION ITEMS TERMINATED BY '-':表示第二个字段hobbies是array形式,元素与元素之间通过'-'分隔。MAP KEYS TERMINATED BY ':':表示第三个字段address是k-v形式,每组k-v内部由':'分隔。查询hiveobstable2表数据。select * from hiveobstable2;创建OBS分区表在OBS桶的“dli-test-021”根目录下创建数据文件目录“data7”。登录DLI管理控制台,选择“SQL编辑器”,在SQL编辑器中“执行引擎”选择“spark”,“队列”选择已创建的SQL队列,数据库选择“testdb”。创建以classNo为分区列的OBS分区表,指定OBS路径“obs://dli-test-021/data7”。CREATE TABLE IF NOT EXISTS hiveobstable3(name STRING, score DOUBLE) PARTITIONED BY (classNo INT) STORED AS TEXTFILE LOCATION 'obs://dli-test-021/data7' ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';注意:创建Hive语法的OBS分区表时,分区字段只能通过PARTITIONED BY指定,该分区字段不能出现在表名后的字段列表中。如下就是错误的示例:CREATE TABLE IF NOT EXISTS hiveobstable3(name STRING, score DOUBLE, classNo INT) PARTITIONED BY (classNo) STORED AS TEXTFILE LOCATION 'obs://dli-test-021/data7';插入表数据:insert into hiveobstable3 VALUES('Aarn','98','25'); insert into hiveobstable3 VALUES('Adam','68','25');查询表数据:select * from hiveobstable3 where classNo = 25;在OBS桶的“obs://dli-test-021/data7”目录下刷新后查询,新生成了分区目录“classno=25”,该分区目录下文件内容为新插入的表数据。在OBS桶的“obs://dli-test-021/data7”目录下,创建分区目录“classno=24”。根据以下文件内容创建文件“test.txt”,并上传该文件到“obs://dli-test-021/data7/classno=24”目录下。Jordon,88,24 Kim,87,24 Henry,76,24在SQL编辑器中执行以下命令,手工导入分区数据到OBS表“hiveobstable3”。ALTER TABLE hiveobstable3 ADD PARTITION (classNo = 24) LOCATION 'obs://dli-test-021/data7/classNo=24';查询表“hiveobstable3”数据。select * from hiveobstable3 where classNo = 24;常见问题问题一:查询OBS分区表报错,报错信息如下:DLI.0005: There should be at least one partition pruning predicate on partitioned table `xxxx`.`xxxx`.;问题根因:查询OBS分区表时没有携带分区字段。解决方案:查询OBS分区表时,where条件中至少包含一个分区字段。问题二:使用DataSource语法指定OBS文件路径创建OBS表,insert数据到OBS表,显示作业运行失败,报:“DLI.0007: The output path is a file, don't support INSERT...SELECT” 错误。问题示例语句参考如下:CREATE TABLE testcsvdatasource (name string, id int) USING csv OPTIONS (path "obs://dli-test-021/data/test.csv");问题根因:创建OBS表指定的OBS路径为具体文件,导致不能插入数据。例如上述示例中的OBS路径为:"obs://dli-test-021/data/test.csv"。解决方案:使用DataSource语法创建OBS表指定的OBS文件路径改为文件目录即可,后续即可通过insert插入数据。上述示例,建表语句可以修改为:CREATE TABLE testcsvdatasource (name string, id int) USING csv OPTIONS (path "obs://dli-test-021/data");问题三:使用Hive语法创建OBS分区表时,提示语法格式不对。例如,如下使用Hive语法创建以classNo为分区的OBS表:CREATE TABLE IF NOT EXISTS testtable(name STRING, score DOUBLE, classNo INT) PARTITIONED BY (classNo) STORED AS TEXTFILE LOCATION 'obs://dli-test-021/data7';问题根因:使用Hive语法创建OBS分区表时,分区字段不能出现在表名后的字段列表中,只能定义在PARTITIONED BY后。解决方案:使用Hive语法创建OBS分区表时,分区字段指定在PARTITIONED BY后。例如:CREATE TABLE IF NOT EXISTS testtable(name STRING, score DOUBLE) PARTITIONED BY (classNo INT) STORED AS TEXTFILE LOCATION 'obs://dli-test-021/data7';
-
问题现象在Notebook Jupyter页面中,新建一个ipynb文件时,出现“Error loading notebook”错误提示,如何处理?原因分析出现这个错误,其根本原因是您用于创建Notebook的OBS桶的属性。如果您使用的OBS桶,其“存储类别”为“归档存储”,且“归档数据直读”功能关闭,此时ModelArts Notebook会出现无法新建一个ipynb的错误。解决方案进入OBS管理控制台,选择此Notebook实例对应的桶,然后单击桶名称进入桶详情页面,在“基础配置”区域,找到“归档数据直读”功能设置,单击此功能,在弹出框中启用“归档数据直读”功能。设置完成后,Notebook实例可正常新建ipynb文件。
-
【功能模块】OBS 对象存储--OBS-SDK-C【操作步骤&问题现象】1、第三方提供的OBS的host_name为210.76.75.21:5443,将demo中的host_name改为该IP后,访问失败 但用obs-browser-plus访问是正常的提示为NameLookupError【截图信息】【日志信息】(可选,上传日志内容或者附件)
yd_262872847
发表于2022-06-03 15:34:37
2022-06-03 15:34:37
最后回复
yd_221160390
2022-12-22 20:23:52
1008 3 -
【对象存储】【OBS BrowserJS SDK】如何使用OBS BrowserJs SDK调用第三方存储服务S3接口
-
锁定华为云存储分官网,限量福利限时抢购!更多大额优惠券等你来领!点击进入:https://activity.huaweicloud.com/obs.html活动时间:2020年6月1日-2022年6月30日本次华为云存储618活动是年中最优惠的以低价购入云产品的活动,也是企业、个人、开发者的最佳上云时机。华为云存储分会场共有7大版块,分别是:优惠券专区、限时秒杀免费体验专区、存储热销产品专区、组合购专区、新购满额送好礼专区、产品应用场景专区、活动抽奖专区。各版块活动多多,新老用户同享。需要上云的朋友可根据自身情况选择,不要错过呦!优惠券专区活动期间,用户可在存储分会场领取618专属优惠券购买存储促销商品,本次优惠券分为满1000减50元、满2000减100元两种,可领取150元,存储新老用户专享。限时秒杀免费体验专区云存储618活动设置限时秒杀专区,OBS单AZ存储包部分产品1.9折起, 100G免费试用一个月。存储新用户专享500G特惠,以最低的价格享受最优的服务,数量有限,先到先得。存储热销产品专区精选存储热销产品中对象存储服务OBS、云服务器备份CBR、弹性文件服务SFS,全年购低至6折起,新老用户同享,满足您的上云需求。组合购专区针对不同场景业务需求不同,精选存储热销产品组合销售,产品搭着买,优惠共同享,组合商品折上折,满足各阶段需求。新购满额送好礼活动期间,累计新购实付达到指定金额,即可参与活动兑换相应的实物礼品。注意:现金券、折扣、优惠券等除外,续费订单不参与此活动,具体活动规则以官网活动说明为准。存储产品应用场景专区精选各储存产品热门场景应用,分析产品特性及使用优势,爆款产品组合推荐,产品搭着买,优惠共同享,满足各阶段的发展需求。并享技术专家一对一免费询问,技术支持,快速响应。抽奖专区活动期间,注册并完成企业实名认证或新购付费>1元时,即可获得一次抽奖机会,中奖概率100%,活动期间最高可获得两次!快来参与吧!有需要了解更多特惠产品的用户也可前往华为云主会场选购。惠上云、更简单,最高可领8888元上云大礼包!点击前往:https://activity.huaweicloud.com/618_promotion/index.html618存储狂欢专场,有问题咨询怎么办?面对如此折扣力度的大促活动,有问题和建议的可第一时间向我们反馈售前咨询:4000-955-988/950808 转1华为云存储618年终钜惠,超多福利享不停。海量产品,多种组合任你选,助力企业轻松上云,专属定制上云方案,让上云更简单!
-
-
总是上传的时候比如4个只有2个或1个成功,报错就是这样HTTP Code: -1 Error Code:null Request ID:null ,请专家解惑FileItemIterator iter = upload.getItemIterator(request); while (iter.hasNext()) { FileItemStream item = iter.next(); stream = item.openStream(); if(!item.isFormField()) { String filename = item.getName(); int index = indexOfLastSeparator(filename); filename=filename.substring(index + 1); Date now = new Date(); SimpleDateFormat dateFormat = new SimpleDateFormat("HHmmss"); SimpleDateFormat dateFormat2 = new SimpleDateFormat("YYYYMM"); String hehe2 = dateFormat2.format( now )+"/"; String hehe = dateFormat.format( now ); filename = new String(filename.getBytes("UTF-8"), "UTF-8"); if(resultSeq==null) { objectname =staffCode+"-"+hehe+"-"+filename; }else objectname = resultSeq+"-"+hehe+"-"+filename; try { PutObjectResult rs=obsClient.putObject("xxx2022", hehe2+objectname, stream); System.out.println("obsClient.statusCode="+rs.getStatusCode()); System.out.println("obsClient.RequestId="+rs.getRequestId()); }catch (ObsException e) { // 推荐:发生异常后,记录失败的HTTP状态码、服务端错误码、服务端请求ID等 System.out.println("HTTP Code: " + e.getResponseCode()); System.out.println("Error Code:" + e.getErrorCode()); System.out.println("Request ID:" + e.getErrorRequestId()); } }
-
【功能模块】OBS ip地址访问【操作步骤&问题现象】1、用OBS电脑端软件,输入AK和SK登录后,可以向桶上传文件。2、但使用postman,填入ip地址形式向OBS上传文件。签名等都过了,但是报Virtual host domain is required while accessing a specific bucket错误【截图信息】【日志信息】(可选,上传日志内容或者附件)
-
不大于500MB数据量,直接拷贝至本地IDE中即可。大于500MB数据量,请先上传到OBS中,再从OBS上传到云上开发环境的默认存储EFS或云硬盘EVS。上传数据至OBS,具体操作请参见上传文件至OBS桶。将OBS中的数据传至Notebook的EFS/EVS中,通过在本地IDE的Terminal中使用ModelArts提供的Moxing库的文件操作API(mox.file.copy_parallel)完成。下图以PyCharm环境中开启Terminal为例,VSCode中操作类似。在本地IDE的Terminal中使用Moxing下载OBS文件到开发环境的操作示例如下:#手动source进入开发环境 cat /home/ma-user/README #然后选择要source的环境 source /home/ma-user/miniconda3/bin/activate MindSpore-python3.7-aarch64 #使用moxing import moxing as mox #下载一个OBS文件夹,从OBS下载至EFS/EVS(OBS -> EFS/EVS) mox.file.copy_parallel('obs://bucket_name/sub_dir_0', '/tmp/sub_dir_0')
-
什么是微认证? 华为云微认证是基于线上学习与在线实践,快速获得场景化技能提升的认证。微认证清单 - 大数据 前景概述:该课程的考试内容部分来自于 微认证课程《车联网大数据驾驶行为分析》,因为这是该课程的早期前身版本,车联网的概述介绍等基于Spark实现车主驾驶行为分析 课程简介:未来城市交通是智能交通融合的场景,车与周围环境是一个紧密联系的实体,基于此背景,我们使用华为云MRS服务中的Spark组件来分析统计指定时间内,车主急加速、急刹车、空挡滑行、超速、疲劳驾驶等违法行为的次数。结合实际的案例,能够让我们更好的掌握Spark及MRS的使用。 课程结构:车联网的背景及案例4了解车联网的背景及应用场景华为车联网常用EI服务介绍31了解华为车联网EI服务,包括OBS和MRSSpark车主驾驶行为分析实验介绍18掌握MRS服务的使用,学习Spark程序的执行过程1、车联网的背景及案例 汽车技术重大变革的历程 技术革命引爆出行方式变革,智能、网联成就智慧出行 未来场景驱动汽车行业数字化转型 典型应用1 - 车辆监控及历史信息的统计分析 典型应用2 - 站点、班线、任务、区域管理2、华为车联网常用EI服务介绍 对象存储服务 OBS(基础服务) 一个基于对象的存储服务,为客户提供海量、安全、高可靠、低成本的数据存储能力,使用时无需考虑容量限制,并且提供多种存储类型供选择,满足客户各类业务场景诉求 业务模型 每个租户在OBS只能创建100给桶(所以区域桶个数之和不超过100),桶的名字在OBS系统内唯一,如果租户准备使用的桶名已经被其他租户使用需要更换桶名使用。 可靠性 数据可靠性保证机制 冗余分片分别放在不同服务器中,小于冗余个数的服务器故障业务完全不受影响; EC算法替代3副本,存储利用率从33%提升到80%+; 一个对象会被拆分为2048~4096个条带,单对象理论峰值带宽:2400 MB/s ~ 4800 MB/s。 多AZ冗余算法使磁盘利用率达到55%,同时支持1个AZ完全故障 为了减少AZ间恢复流量,每个AZ有2份AZ内冗余数据,AZ内故障两给服务器,数据恢复能在AZ内完成。 服务器或者硬盘故障时,后台会以2 TB/s的速度触发重构,确保数据在最短时间内恢复到正常状态。 存算分离方案 MapReduce服务 MRS 为客户提供Hudi、ClickHouse、Spark、Flink、Kafka、HBase等Hadoop生态的高性能大数据组件,支持数据湖、数据仓库、BI、AI融合等能力。 MRS同时支持混合云和公有云两种形态: 混合云版本,一个架构实现离线、实时、逻辑三种数据湖,以云原生架构助力客户智能升级; 公有云版本,协助客户快速构建低成本、灵活开放、安全可靠的一站式大数据平台。 架构图 产品优势 Spark Spark简介 2009年诞生于美国加州大学伯克利分校AMP实验室。 Apache Spark是一种基于内存的快速、通用、可扩展的大数据计算引擎。 Spark 是一站式解决方案,集批处理(Spark Core )、实时流处理(Spark Streaming )、交互式查询(Spark SQL )、图计算(GraphX )与机器学习(MLLib )于一体。 Spark应用场景 批处理可用于ETL (抽取、转换、加载)。 机器学习可用于自动判断淘宝的买家评论是好评还是差评。 交互式分析可用于查询Hive数据仓库。 流处理可用于页面点击流分析,推荐系统,舆情分析等实时业务。 Spark架构 Spark特点 SparkSQL Spark SQL是Spark中用于结构化数据处理的模块。 在Spark应用中,可以无缝的使用SQL语句亦或是DataFrame API对结构化数据进行查询。 SparkStreaming Spark Streaming的基本原理是将实时输入数据流以时间片(秒级)为单位进行拆分,然后经Spark引擎以类似批处理的方式处理每个时间片数据。动手实验:实验避坑分享:论 《基于Spark实现车主驾驶行为分析》 实验避坑,100%完成_华为云开发者学堂_华为云论坛 (huaweicloud.com)下一期预告:使用DLI Flink SQL进行电商实时业务数据分析开发
-
在使用 obs c sdk 过程中,默认 会生成obs sdk日志 如何关闭打印日志功能呢?
-
ObsClient.uploadFile接口不支持设置对象生命周期
-
【功能模块】OBS Python SDK上传文件【操作步骤&问题现象】from obs import PutObjectHeaderfrom obs import ObsClient# 创建ObsClient实例ak = 'XXXXXX'sk = 'XXXXXX'server = 'https://obs.cn-south-1.myhuaweicloud.com'obsClient = ObsClient(access_key_id=ak,secret_access_key=sk,server=server)# 使用访问OBSresp = ObsClient.putFile(bucketName='XXXXXX',objectKey='test.txt',file_path='/Users/test.txt')if resp.status < 300: print('requestId:', resp.requestId) print('etag:', resp.body.etag) print('versionId:', resp.body.versionId) print('storageClass:', resp.body.storageClass)else: print('errorCode:', resp.errorCode) print('errorMessage:', resp.errorMessage)
-
安装 obs,使用的 npm install esdk-obs-nodejs 进行安装安装之后,项目编译就报错了(Angular12项目)在使用下面语句引入时,就会报错了var ObsClient = require('esdk-obs-nodejs');有没有遇到同样问题的,烦请大佬帮忙解答一下啊,感谢~
-
【功能模块】c-sdk 生成下载对象的URL【操作步骤&问题现象】1、参考c-sdk的demo写了一个获取下载对象的临时url函数static void test_gen_signed_url_get_object(char *bucket_name, char *key, char *versionid)2、获取到的url不能直接在浏览器中访问【截图信息】个人代码:std::pair<obs_status, tempAuthResult>HuaWeiOBS::getObjectTemporaryAuth(const std::string &bucketName, const std::string &keyName, const std::string &versionId){ std::pair<obs_status, tempAuthResult> urlPair = std::make_pair(OBS_STATUS_BUTT, tempAuthResult()); // obs options configure m_obsOptions.bucket_options.bucket_name = const_cast<char *>(bucketName.data()); obs_options option; init_obs_options(&option); option.bucket_options.bucket_name = const_cast<char *>(bucketName.data()); option.bucket_options.access_key = m_accessKey.data(); option.bucket_options.secret_access_key = m_secretAccessKey.data(); option.bucket_options.host_name = m_hostName.data(); // key info configure obs_object_info objectInfo; memset(&objectInfo, 0, sizeof(objectInfo)); objectInfo.key = const_cast<char *>(keyName.data()); objectInfo.version_id = NULL; // condition obs_get_conditions getcondition; memset(&getcondition, 0, sizeof(obs_get_conditions)); init_get_properties(&getcondition); getcondition.start_byte = 0; getcondition.byte_count = 100; // callback prepair std::string objectContent; objectContent.reserve(1024); get_object_callback_data data{objectContent, OBS_STATUS_BUTT}; // 定义下载的回调函数 obs_get_object_handler getObjectHandler = { {&response_properties_callback, &get_object_complete_callback}, &get_object_data_callback}; // down object tempAuthResult ptrResult; temp_auth_configure tempauth; tempauth.callback_data = (void *)(&ptrResult); tempauth.expires = 10; tempauth.temp_auth_callback = &object_temp_auth_callback; option.temp_auth = &tempauth; get_object(&option, &objectInfo, &getcondition, 0, &getObjectHandler, &data); if (OBS_STATUS_OK == data.ret_status) { printf("gen key: %s object temporary url successfully.\n", keyName.data()); } else { printf("en key: %s object temporary url faied(%s).\n", keyName.data(), obs_get_status_name(data.ret_status)); } urlPair.first = data.ret_status; urlPair.second = ptrResult; return urlPair;}【日志信息】(可选,上传日志内容或者附件)2022-05-18 10:45:38 657| CRIT|[140132699154304]==============log start============2022-05-18 10:45:38 657| WARN|[140132699154304]|obs_initialize OBS SDK Version= 3.21.82022-05-18 10:45:38 658| WARN|[140132699154304]|curl_easy_setopt curl path= https://dtu.obs.cn-south-1.myhuaweicloud.com/?apiversion2022-05-18 10:45:38 774| WARN|[140132699154304]|enter request perform!!!2022-05-18 10:45:38 774| WARN|[140132699154304]|src for urlEncode is NULL.2022-05-18 10:45:38 774| WARN|[140132699154304]|request_perform status = 02022-05-18 10:45:38 774| WARN|[140132699154304]|enter request perform!!!2022-05-18 10:45:38 774| WARN|[140132699154304]|src for urlEncode is NULL.2022-05-18 10:45:38 774| WARN|[140132699154304]|compose_auth_header request_perform : StringToSign: HEADx-amz-date:Wed, 18 May 2022 02:45:38 GMT/dtu/Test_HuangLi/DTU/3F000000010010031A8200012022-05-18 10:45:38 845| WARN|[140132699154304]|Content-Type:2022-05-18 10:45:38 845| WARN|[140132699154304]|User-Agent: obs-sdk-c-3.21.82022-05-18 10:45:38 845| WARN|[140132699154304]|x-amz-date: Wed, 18 May 2022 02:45:38 GMT2022-05-18 10:45:38 845| WARN|[140132699154304]|request_finish request_finish status = 0,httpResponseCode = 4042022-05-18 10:45:38 845| WARN|[140132699154304]|Message: (null)2022-05-18 10:45:38 845| WARN|[140132699154304]|Request Id: 00000180D50E7F6C930F8F0EEAA391DC2022-05-18 10:45:38 845| WARN|[140132699154304]|Reserved Indicator: (null)2022-05-18 10:45:38 846| WARN|[140132699154304]|enter request perform!!!2022-05-18 10:45:38 846| WARN|[140132699154304]|src for urlEncode is NULL.2022-05-18 10:45:38 846| WARN|[140132699154304]|compose_auth_header request_perform : StringToSign: HEADx-amz-date:Wed, 18 May 2022 02:45:38 GMT/dtu/Test_HuangLi/DTU/3F000000010010031A820001/DeviceDescription2022-05-18 10:45:38 908| WARN|[140132699154304]|obs_initialize OBS SDK Version= 3.21.82022-05-18 10:45:38 908| WARN|[140132699154304]|obs_initialize OBS SDK Version= 3.21.82022-05-18 10:45:38 908| WARN|[140132699154304]|curl_easy_setopt curl path= https://dtu.obs.cn-south-1.myhuaweicloud.com/?apiversion2022-05-18 10:45:38 962| WARN|[140132699154304]|enter request perform!!!2022-05-18 10:45:38 962| WARN|[140132699154304]|src for urlEncode is NULL.2022-05-18 10:45:38 962| WARN|[140132699154304]|src for urlEncode is NULL.2022-05-18 10:45:38 962| WARN|[140132699154304]|compose_auth_header request_perform : StringToSign: GETx-obs-date:Wed, 18 May 2022 02:45:38 GMT/dtu/2022-05-18 10:47:28 622| CRIT|[140737353881472]==============log start============2022-05-18 10:47:28 622| WARN|[140737353881472]|obs_initialize OBS SDK Version= 3.21.82022-05-18 10:47:51 501| WARN|[140737353881472]|curl_easy_setopt curl path= https://dtu.obs.cn-south-1.myhuaweicloud.com/?apiversion2022-05-18 10:47:51 639| WARN|[140737353881472]|enter request perform!!!2022-05-18 10:47:51 639| WARN|[140737353881472]|src for urlEncode is NULL.2022-05-18 10:49:11 035| WARN|[140737353881472]|request_perform status = 0
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签