-
我们有一个场景:使用微信小程序上传手机视频到OBS中,然后从OBS下载视频在小程序中播放。目前andorid手机可以上传视频并播放正常,但是IOS手机虽然上传成功但是不能正常播放视频。目前定位到的问题点是:把视频访问连接发送到微信群中,IOS手机是无法打开视频。也就是说可以排除小程序的影响因素。
-
问题1:公有云上租户 OBS 带宽怎么查询,有没有API来测试带宽问题2:租户侧 OBS 带宽如何调整问题3:公有云上单个文件上行和下行的速度是多少,受什么情况依赖
-
php如何实现华为云obs跨区域复制
-
准备工作:申请一个OBS资源,创建一个桶。开启一个CloudIDE实例,打开一个terminal,先下载并安装obs的工具obsutil。配置obsutil:需要用到开发者的我的凭证->访问密钥->新建访问密钥的AK,SK。使用obsutil命令在桶中新建一个文件夹test
-
有增加用户自定义的元数据的api,但貌似没有看到可以删除的api?
-
请教一个问题,需要华为专业的帮助:我要遍历所有桶名,直接用官方提供obs的API代码,复制粘贴,然后直接运行就报错。错误是在huaweicloud-sdk-dotnet-obs-master源代码里抛出的。需要说明的是:这个.net版本的代码,在连接了互联网的机器上能够正常执行,是不会报错的。但是,由于我们的内网服务器不能连接互联网,是通过专线IPsec来实现对华为云的连接(在此条件下用obs客户端可以连接上并能正常操作云上的对象),并且用obs的java版本的代码也是可以正常执行。但是用obs的.net版本的程序执行却会报错!百思不得其解。报错情况,如下图:我调用执行的API代码,如下图:
-
2020-10-30 10:48:28.386 WARN 23931 --- [pool-5-thread-1] c.o.s.internal.RestStorageService : com.obs.services.internal.ServiceException: Request Error: java.net.UnknownHostException: bc5d5fe30c3f4da0ac355a56add071d5.obs.cn-north-4.myhuaweicloud.com: Temporary failure in name resolution PUT 'http://bc5d5fe30c3f4da0ac355a56add071d5.obs.cn-north-4.myhuaweicloud.com/' on Host 'bc5d5fe30c3f4da0ac355a56add071d5.obs.cn-north-4.myhuaweicloud.com'com.obs.services.internal.ServiceException: Request Error: java.net.UnknownHostException: bc5d5fe30c3f4da0ac355a56add071d5.obs.cn-north-4.myhuaweicloud.com: Temporary failure in name resolutionat com.obs.services.internal.RestStorageService.handleThrowable(RestStorageService.java:274) ~[esdk-obs-java-3.20.6.1.jar!/:na]at com.obs.services.internal.RestStorageService.performRequest(RestStorageService.java:812) ~[esdk-obs-java-3.20.6.1.jar!/:na]at com.obs.services.internal.RestStorageService.performRestPut(RestStorageService.java:998) ~[esdk-obs-java-3.20.6.1.jar!/:na]at com.obs.services.internal.RestStorageService.performRestPut(RestStorageService.java:987) ~[esdk-obs-java-3.20.6.1.jar!/:na]at com.obs.services.internal.ObsService.createBucketImpl(ObsService.java:1483) ~[esdk-obs-java-3.20.6.1.jar!/:na]at com.obs.services.ObsClient.access$200(ObsClient.java:211) [esdk-obs-java-3.20.6.1.jar!/:na]at com.obs.services.ObsClient$1.action(ObsClient.java:758) [esdk-obs-java-3.20.6.1.jar!/:na]at com.obs.services.ObsClient$1.action(ObsClient.java:751) [esdk-obs-java-3.20.6.1.jar!/:na]at com.obs.services.ObsClient.doActionWithResult(ObsClient.java:3929) [esdk-obs-java-3.20.6.1.jar!/:na]at com.obs.services.ObsClient.createBucket(ObsClient.java:750) [esdk-obs-java-3.20.6.1.jar!/:na]at com.obs.services.ObsClient.createBucket(ObsClient.java:738) [esdk-obs-java-3.20.6.1.jar!/:na]at com.obs.services.ObsClient.createBucket(ObsClient.java:708) [esdk-obs-java-3.20.6.1.jar!/:na]at com.pcl.service.obs.OBSFileService.createBucketName(OBSFileService.java:94) [classes!/:0.0.1-SNAPSHOT]at com.pcl.service.obs.OBSFileService.unZipFileToMinio(OBSFileService.java:865) [classes!/:0.0.1-SNAPSHOT]at com.pcl.service.DataSetService$2.run(DataSetService.java:670) [classes!/:0.0.1-SNAPSHOT]at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_161]at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_161]at java.lang.Thread.run(Thread.java:748) [na:1.8.0_161]Caused by: java.net.UnknownHostException: bc5d5fe30c3f4da0ac355a56add071d5.obs.cn-north-4.myhuaweicloud.com: Temporary failure in name resolutionat java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method) ~[na:1.8.0_161]at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:928) ~[na:1.8.0_161]at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1323) ~[na:1.8.0_161]at java.net.InetAddress.getAllByName0(InetAddress.java:1276) ~[na:1.8.0_161]at java.net.InetAddress.getAllByName(InetAddress.java:1192) ~[na:1.8.0_161]at java.net.InetAddress.getAllByName(InetAddress.java:1126) ~[na:1.8.0_161]at okhttp3.Dns$1.lookup(Dns.java:39) ~[okhttp-3.7.0.jar!/:na]at okhttp3.internal.connection.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:170) ~[okhttp-3.7.0.jar!/:na]at okhttp3.internal.connection.RouteSelector.nextProxy(RouteSelector.java:136) ~[okhttp-3.7.0.jar!/:na]at okhttp3.internal.connection.RouteSelector.next(RouteSelector.java:81) ~[okhttp-3.7.0.jar!/:na]at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:171) ~[okhttp-3.7.0.jar!/:na]at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:121) ~[okhttp-3.7.0.jar!/:na]at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:100) ~[okhttp-3.7.0.jar!/:na]at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42) ~[okhttp-3.7.0.jar!/:na]at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) ~[okhttp-3.7.0.jar!/:na]at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) ~[okhttp-3.7.0.jar!/:na]at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93) ~[okhttp-3.7.0.jar!/:na]at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) ~[okhttp-3.7.0.jar!/:na]at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) ~[okhttp-3.7.0.jar!/:na]at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93) ~[okhttp-3.7.0.jar!/:na]at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) ~[okhttp-3.7.0.jar!/:na]at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:120) ~[okhttp-3.7.0.jar!/:na]at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) ~[okhttp-3.7.0.jar!/:na]at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) ~[okhttp-3.7.0.jar!/:na]at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:185) ~[okhttp-3.7.0.jar!/:na]at okhttp3.RealCall.execute(RealCall.java:69) ~[okhttp-3.7.0.jar!/:na]at com.obs.services.internal.RestStorageService.performRequest(RestStorageService.java:634) ~[esdk-obs-java-3.20.6.1.jar!/:na]
-
【现象描述】通过外表从obs中导出数据有大量报错,例如1. duplicate key value violates unique constrain "xxxx"2. null value in column "yyyy"3. 导入的数据中有大量非本数据文件中的内容【原因分析】obs中的文件名采用路径+文件拼写,读取时使用模糊匹配。当obs外表定义的路径中未加斜杠,且该路径下有其他类似的文件名,会导致obs读取到其他文件,入库时会出现各种违反约束的报错。即使能入库,也会出现非预期数据。【处理办法】定义外表在location的路径最后加斜杠,例如:/user/hive/warehouse/mppdb.db/region_orc11_64stripe/
-
对象存储的低频存储为什么会有数据取回的步骤,底层架构是什么样的?和标准存储有什么区别?还忘大神解答
-
跪求大神帮忙解决!!!以下是我从华为为下载的编程关于 “展示了分段并发上传大对象的用法” 。但是当我们跑完代码, 在模拟的手机,它显示“Create a demo busket for demo Error message: The location contraint is incompatible for the region specific endpoint this request was sent to. Error code: IllegalLocationConstraintExceprtion Request ID: 000000175.... Host ID:wQQYK..."public class MainActivity extends androidx.appcompat.app.AppCompatActivity{ private static final String endPoint = "https://obs.cn-north-4.myhuaweicloud.com"; private static final String ak = "E5DVZAAK95..."; private static final String sk = "PluwDOGzcWcFXXYdlNjsnITWrB4Hud7..."; private static String bucketName = "chenzi"; private static String objectKey = "my-obs-object-key-demo"; private static ExecutorService executorService = Executors.newFixedThreadPool(5); private static List<PartEtag> partETags = Collections.synchronizedList(new ArrayList<PartEtag>()); private static ObsClient obsClient; private static StringBuffer sb = new StringBuffer(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layout2); //Toast.makeText(this, "hUAWEItYR", Toast.LENGTH_LONG).show(); ObsConfiguration config = new ObsConfiguration(); config.setSocketTimeout(30000); config.setConnectionTimeout(10000); config.setEndPoint(endPoint); /* * Constructs a obs client instance with your account for accessing OBS */ obsClient = new ObsClient(ak, sk, config); final TextView tv = (TextView)findViewById(R.id.tv); tv.setText("Click to start test"); // Toast.makeText(this, "hUAWEItYR", Toast.LENGTH_LONG).show(); tv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { tv.setClickable(false); AsyncTask<Void, Void, String> task = new ConcurrentUploadPartTask(); task.execute(); } }); } private static class PartUploader implements Runnable { private File sampleFile; private long offset; private long partSize; private int partNumber; private String uploadId; public PartUploader(File sampleFile, long offset, long partSize, int partNumber, String uploadId) { this.sampleFile = sampleFile; this.offset = offset; this.partSize = partSize; this.partNumber = partNumber; this.uploadId = uploadId; } @Override public void run() { try { UploadPartRequest uploadPartRequest = new UploadPartRequest(); uploadPartRequest.setBucketName(bucketName); uploadPartRequest.setObjectKey(objectKey); uploadPartRequest.setUploadId(this.uploadId); uploadPartRequest.setFile(this.sampleFile); uploadPartRequest.setPartSize(this.partSize); uploadPartRequest.setOffset(this.offset); uploadPartRequest.setPartNumber(this.partNumber); UploadPartResult uploadPartResult = obsClient.uploadPart(uploadPartRequest); sb.append("Part#" + this.partNumber + " done\n\n"); partETags.add(new PartEtag(uploadPartResult.getEtag(), uploadPartResult.getPartNumber())); } catch (Exception e) { e.printStackTrace(); } } } class ConcurrentUploadPartTask extends AsyncTask<Void, Void, String> { @Override protected String doInBackground(Void... params) { try { /* * Create bucket */ sb.append("Create a new bucket for demo\n\n"); obsClient.createBucket(bucketName); /* * Claim a upload id firstly */ String uploadId = claimUploadId(); sb.append("Claiming a new upload id " + uploadId + "\n\n"); long partSize = 5 * 1024 * 1024l;// 5MB File sampleFile = createSampleFile(); long fileLength = sampleFile.length(); long partCount = fileLength % partSize == 0 ? fileLength / partSize : fileLength / partSize + 1; if (partCount > 10000) { throw new RuntimeException("Total parts count should not exceed 10000"); } else { sb.append("Total parts count " + partCount + "\n\n"); } /* * Upload multiparts to your bucket */ sb.append("Begin to upload multiparts to OBS from a file\n\n"); for (int i = 0; i < partCount; i++) { long offset = i * partSize; long currPartSize = (i + 1 == partCount) ? fileLength - offset : partSize; executorService.execute(new PartUploader(sampleFile, offset, currPartSize, i + 1, uploadId)); } /* * Waiting for all parts finished */ executorService.shutdown(); while (!executorService.isTerminated()) { try { executorService.awaitTermination(5, TimeUnit.SECONDS); } catch (InterruptedException e) { e.printStackTrace(); } } /* * Verify whether all parts are finished */ if (partETags.size() != partCount) { throw new IllegalStateException("Upload multiparts fail due to some parts are not finished yet"); } else { sb.append("Succeed to complete multiparts into an object named " + objectKey + "\n\n"); } /* * View all parts uploaded recently */ listAllParts(uploadId); /* * Complete to upload multiparts */ completeMultipartUpload(uploadId); return sb.toString(); } catch (ObsException e) { sb.append("\n\n"); sb.append("Response Code:" + e.getResponseCode()) .append("\n\n") .append("Error Message:" + e.getErrorMessage()) .append("\n\n") .append("Error Code:" + e.getErrorCode()) .append("\n\n") .append("Request ID:" + e.getErrorRequestId()) .append("\n\n") .append("Host ID:" + e.getErrorHostId()); return sb.toString(); } catch (Exception e) { sb.append("\n\n"); sb.append(e.getMessage()); return sb.toString(); } finally { if (obsClient != null) { try { /* * Close obs client */ obsClient.close(); } catch (IOException e) { } } } } @Override protected void onPostExecute(String result) { TextView tv = (TextView)findViewById(R.id.tv); tv.setText(result); tv.setOnClickListener(null); tv.setMovementMethod(ScrollingMovementMethod.getInstance()); } private String claimUploadId() throws ObsException { InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest(bucketName, objectKey); InitiateMultipartUploadResult result = obsClient.initiateMultipartUpload(request); return result.getUploadId(); } private File createSampleFile() throws IOException { File file = File.createTempFile("obs-android-sdk-", ".txt"); file.deleteOnExit(); Writer writer = new OutputStreamWriter(new FileOutputStream(file)); for (int i = 0; i < 1000000; i++) { writer.write(UUID.randomUUID() + "\n\n"); writer.write(UUID.randomUUID() + "\n\n"); } writer.flush(); writer.close(); return file; } private void completeMultipartUpload(String uploadId) throws ObsException { // Make part numbers in ascending order Collections.sort(partETags, new Comparator<PartEtag>() { @Override public int compare(PartEtag o1, PartEtag o2) { return o1.getPartNumber() - o2.getPartNumber(); } }); sb.append("Completing to upload multiparts\n\n"); CompleteMultipartUploadRequest completeMultipartUploadRequest = new CompleteMultipartUploadRequest(bucketName, objectKey, uploadId, partETags); obsClient.completeMultipartUpload(completeMultipartUploadRequest); } private void listAllParts(String uploadId) throws ObsException { sb.append("Listing all parts......"); ListPartsRequest listPartsRequest = new ListPartsRequest(bucketName, objectKey, uploadId); ListPartsResult partListing = obsClient.listParts(listPartsRequest); for (Multipart part : partListing.getMultipartList()) { sb.append("\tPart#" + part.getPartNumber() + ", ETag=" + part.getEtag()); } sb.append("\n"); } }
-
如何解决这个问题
-
环境: JAVA 14esdk-obs-java [3.19.7,)问题:最近使用时一直出现408
-
请教一下各位大佬,一个文件都没有上传成功是因为什么呢 之前是可以得
-
直播开始前,可配置对应的录制规则,配置完成后,对应域名下的所有直播流将按照录制规则进行录制。录制完成后,可在直播录制管理或OBS中查看录制文件。 如何进行直播录制配置呢?且看视频解说->更多指导请参见视频直播帮助中心:https://support.huaweicloud.com/live/index.html【视频教程】上期回顾【视频教程】2020年第1期 视频解说直播拉流回源配置【视频教程】2020年第2期 视频解说直播开停播通知【视频教程】2020年第3期 视频解说直播HTTPS安全加速
-
上滑加载中
推荐直播
-
华为云码道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华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签