详情页标题前

阿里云云原生大数据计算服务 MaxComputeTunnel SDK常见问题-云淘科技

详情页1

本文为您介绍使用Tunnel SDK过程中的常见问题

问题类别 常见问题
Tunnel SDK Upload
  • 使用Tunnel SDK上传数据时,上传的数据可以自动分配到各个分区吗?
  • 使用Tunnel SDK上传数据时,编写完UDF打成JAR包后上传,对JAR包大小有要求吗?
  • 使用Tunnel SDK上传数据时,是否有分区数量限制?
  • 使用Tunnel SDK上传数据时,报错StatusConflict,如何解决?
  • 使用Tunnel SDK上传数据时,报错Blocks Not Match,如何解决?
  • 一次性上传8000万条数据,在执行odps tunnel recordWriter.close()时报错StatusConflict,如何解决?
  • 如何使用TunnelBufferedWriter规避使用Tunnel SDK进行批量数据上传出错的问题?
Tunnel SDK Download 使用Tunnel SDK下载数据时,报错You need to specify a partitionspec along with the specified table,如何解决?
其他问题
  • BlockId是否可以重复?
  • Block大小是否存在限制?
  • MaxCompute Tunnel目前支持哪些语言的SDK?
  • 遇到读写超时或IOException时,如何解决?

使用Tunnel SDK上传数据时,上传的数据可以自动分配到各个分区吗?

Tunnel SDK上传数据时,是无法自动分配到各个分区的。每一次上传只支持将数据上传到一张表或表的一个分区,有分区的表一定要指定上传的分区,多级分区一定要指定到末级分区。

使用Tunnel SDK上传数据时,编写完UDF打成JAR包后上传,对JAR包大小有要求吗?

JAR包不能超过10 MB,如果JAR包超过10 MB,建议转用MaxCompute Tunnel Upload命令上传数据。

使用Tunnel SDK上传数据时,是否有分区数量限制?

最大支持6万个分区。分区数量过多,不方便进行统计和分析。MaxCompute会限制单个作业中Instance的数量。作业的Instance和用户输入的数据量及分区数量是密切相关的,因此建议先评估下业务,选择合适的分区策略,避免分区过多带来的影响。

使用Tunnel SDK上传数据时,报错StatusConflict,如何解决?

  • 问题现象
    使用Tunnel SDK上传数据时,返回如下报错。

    RequestId=20170116xxxxxxx, ErrorCode=StatusConflict, ErrorMessage=You cannot complete the specified operation under the current upload or download status. java.io.IOException: RequestId=20170116xxxxxxx, ErrorCode=StatusConflict, ErrorMessage=You cannot complete the specified operation under the current upload or download status.at com.aliyun.odps.tunnel.io.TunnelRecordWriter.close(TunnelRecordWriter.java:93)
  • 问题原因:该问题是在Close RecordWriter时出现的,可能原因如下。
    • 对一个已经关闭的RecordWriter执行了关闭操作。
    • RecordWriter对应的Session已经关闭。
    • Session已经提交过。
  • 解决措施:您可以针对上述可能出现的原因进行排查,比如打印一些日志、在提交Session前打印一些当前RecordWriter的状态与Session的状态。确保无上述问题后,重新尝试上传数据。

使用Tunnel SDK上传数据时,报错Blocks Not Match,如何解决?

  • 问题现象:

    使用Tunnel SDK上传数据时,返回如下报错。

    ErrorCode=Local Error, ErrorMessage=Blocks not match, server: 0, tunnelServiceClient: 1
    at com.aliyun.odps.tunnel.TableTunnel$UploadSession.commit(TableTunnel.java:814)      
  • 产生原因

    服务器收到的Block个数和Commit时参数的个数不一致。

  • 解决措施
    • 在代码中查看uploadSession.openRecordWriter(i)打开的Writer个数和Commit时的Block数组,确保相对应。
    • 代码中写入执行完成后,确认是否调用recordWriter.close(); 。如果直接执行Commit,可能导致服务器端的Block个数不符合预期。

一次性上传8000万条数据,在执行odps tunnel recordWriter.close()时报错StatusConflict,如何解决?

  • 问题现象
    一次性上传8000万条数据,在执行odps tunnel recordWriter.close()时,返回如下报错。

    ErrorCode=StatusConflict, ErrorMessage=You cannot complete the specified operation under the current upload or download status.
  • 产生原因

    Session状态错误,前面的操作里已经关闭或者提交了该Session。

  • 解决措施

    建议重新创建一个Session再上传一次数据。对于不同的分区,每个分区需要单独的一个Session。对于多次提交导致报错,请先检查数据是否已经上传成功,如果失败,请重新上传一次,请参见多线程上传示例。

如何使用TunnelBufferedWriter规避使用Tunnel SDK进行批量数据上传出错的问题?

MaxCompute Java SDK在0.21.3-public版本之后新增了BufferredWriter的SDK,简化了数据上传,并且提供了容错功能。BufferedWriter从用户角度看,就是在Session上打开一个Writer然后进行写记录即可。具体实现是,BufferedWriter先将记录缓存在客户端的缓冲区中,并在缓冲区填满之后打开一个HTTP连接进行上传。

BufferedWriter会尽最大可能容错,保证数据上传成功,使用方法请参见BufferedWriter。

使用Tunnel SDK下载数据时,报错You need to specify a partitionspec along with the specified table,如何解决?

  • 问题现象

    使用Tunnel SDK下载分区表数据,返回如下报错。

    ErrorCode=MissingPartitionSpec, ErrorMessage=You need to specify a partitionspec along with the specified table.       
  • 产生原因

    使用Tunnel SDK下载分区表数据时,需要指定分区列的列值,否则会报错。

  • 解决措施
    • 如果您使用MaxCompute客户端工具里的Tunnel命令行进行导出,客户端支持分区表整个导出,其结果会导出到一个文件夹里。
    • 如果您使用Tunnel SDK进行导出,可以先使用SDK获取分区表的所有分区,命令示例如下。
      odps.tables().get(tablename) t.getPartitions()      

MaxCompute Tunnel目前支持哪些语言的SDK?

MaxCompute Tunnel目前支持Java版的SDK。

BlockId是否可以重复?

同一个UploadSession中的BlockId不能重复。对于同一个UploadSession,用一个BlockId打开RecordWriter,写入一批数据后,调用Close,写入成功后不可以再用该BlockId打开另一个RecordWriter写入数据。Block默认最多20000个,即取值范围为0~19999。

Block大小是否存在限制?

每次上传至Tunnel的数据块大小默认为100 MiB。一个Block大小上限为100 GB,强烈建议为大于64 MB的数据,每一个Block对应一个文件,小于64
MB的文件统称为小文件,小文件过多将会影响使用性能。如果数量较大且是持续上传模式,Block的数据量在64 MB~256 MB之间; 如果是每天传一次的批量模式,Block可以设置为1
GB左右。

使用新版BufferedWriter可以更简单地进行上传且可以避免小文件等问题,详情请参见 Tunnel-SDK-BufferedWriter。

遇到读写超时或IOException时,如何解决?

上传数据时,Writer每写入8 KB数据会触发一次网络动作,如果120秒内没有网络动作,服务端将主动关闭连接,届时Writer将不可用,请重新打开一个新的Writer写入。

建议您使用Tunnel-SDK-BufferedWriter。

下载数据时,Reader也有类似机制,若长时间没有网络动作会断开连接,建议Reader过程连续进行,中间不穿插其他系统的接口。

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/158822.html

(0)
上一篇 2023年12月10日 上午1:28
下一篇 2023年12月10日 上午1:28
详情页2

相关推荐

  • 腾讯云对象存储直传归档

    简介 目前对象存储(Cloud Object Storage,COS)支持直传归档,您可直接将对象设置为归档类型并上传到 COS,直传归档的方式包括控制台、API、SDK、COSCMD 工具。此外您还可以通过 COS 的生命周期功能将已上传的对象沉降为归档存储类型或深度归档存储类型。关于归档类型的详细介绍,请参见 存储类型概述。 直传归档的方式 控制台上传 …

    2023年12月9日
  • 腾讯云高性能计算集群API 文档

    高性能计算集群与云服务器共用 API 接口,文档请参见 云服务器 API 概览。 官网1折活动,限时活动,即将结束,速速收藏同尘科技为腾讯云授权服务中心。购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠

    腾讯云 2023年12月9日
  • 阿里云日志服务SLS分区(Shard)-云淘科技

    日志服务使用Shard控制Logstore或MetricStore的读写数据的能力,数据必定保存在某一个Shard中。 Shard范围 每个Shard均有范围,为MD5左闭右开区间[BeginKey,EndKey)。每个Shard范围不会相互覆盖,且属于整个MD5范围内[00000000000000000000000000000000,fffffffffff…

    阿里云日志服务SLS 2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云ECS云服务器自定义镜像概述-云淘科技

    自定义镜像是您基于实例或快照创建的镜像,或者从本地导入的镜像,包含已部署的应用、数据等信息。使用自定义镜像可以快速创建更多相同配置的实例,无需每次创建实例时重复配置操作。 自定义镜像使用流程 当您成功创建或成功导入自定义镜像后,镜像的状态为可用。此时,您可以使用该镜像创建实例,可以将其共享给其他阿里云账号使用,或复制该镜像到其他地域使用,或导出该镜像到OSS…

    2023年12月9日
  • 腾讯云容器服务采集容器日志到 CLS同尘科技

    本文将介绍如何在容器服务控制台配置日志采集规则并投递到 腾讯云日志服务 CLS。 操作步骤 创建日志采集规则 1. 登录 容器服务控制台,选择左侧导航栏中的日志管理 > 日志规则。2. 在日志规则页面上方选择地域和需要配置日志采集规则的集群,单击新建。如下图所示: 3. 在新建日志采集规则页面中配置日志服务消费端,在消费端 > 类型中选择 C…

    2023年12月9日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。