详情页标题前

阿里云云原生大数据计算服务 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/158810.html

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

相关推荐

  • 腾讯云对象存储缩放

    功能概述 对象存储通过数据万象 imageMogr2 接口提供图片缩放功能。该功能支持以下处理方式:下载时处理上传时处理云上数据处理 授权说明 下载时处理:授权策略中 action 设置为 cos:GetObject。上传时处理:授权策略中 action 设置为 cos:PutObject。云上数据处理:授权策略中 action 设置为 cos:GetObj…

    2023年12月9日
  • 腾讯云云点播图片审核

    操作场景 图片审核是同步操作,在云点播控制台媒资管理页面发起,将立即得到审核结果。 操作步骤 发起图片审核并查看结果 1. 登录 云点播控制台,单击左侧导航栏应用管理,进入应用列表页。2. 找到需要管理任务的应用,点击应用名称进入应用管理页。3. 点击左侧导航栏媒资管理 > 图片管理,“已上传”页面。按照下图指引选择图片发起图片审核:  n页…

    2023年12月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 腾讯云容器服务创建监控实例同尘科技

    操作场景 您在创建完 Prometheus 监控服务实例后可以将当前地域中的集群与此实例相关联。关联同一 Prometheus 实例中的集群可以实现监控指标的联查和统一告警。目前 Prometheus 监控服务功能支持的集群类型包括托管集群、独立集群、 Serverless 集群以及边缘集群。本文介绍如何在腾讯云容器服务控制台中创建和管理监控实例,您可根据以…

    2023年12月9日
  • 阿里云RDS数据库按量付费转包年包月-云淘科技

    您可以根据业务需求,将RDS实例的计费方式由后付费(按量付费)转变为预付费(包年包月)。 前提条件 实例规格不能为历史规格(不再售卖的规格)。历史规格列表请参见历史规格。若需将历史规格实例转变为包年包月,请先变更实例规格。具体操作请参见变更配置。 实例的计费类型为按量付费。 实例状态为运行中。 实例没有未完成支付的转包年包月订单。 影响 本操作对实例的运行不…

    阿里云数据库 2023年12月9日
  • 阿里云对象存储OSS发起请求概述-云淘科技

    OSS是一个REST服务。您可以使用REST API或封装了REST API的阿里云SDK向OSS发起请求。认证系统收到请求后,会通过凭证验证请求的发送者身份。身份验证成功后,您可以操作相应的OSS资源。 发起请求 您可以使用以下方式向OSS发起请求: 阿里云SDK:使用阿里云SDK发起请求,可以免去手动签名的过程。大部分情况下,推荐您使用阿里云SDK发起请…

    阿里云对象存储 2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

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